[英]Python TK Notebook tab change check
新手程序員在這里。 我正在構建基於tk的桌面應用程序,遇到了一個問題:
我有一個包含幾個內容的主窗口,其中包括兩個選項卡:
global nBook
nBook = ttk.Notebook(self, name="book")
nBook.place(x=300,y=400)
frameOne = ttk.Frame(nBook, width=100, height=100)
frameTwo = ttk.Frame(nBook, width=100, height=100)
nBook.add(frameOne, text='T1')
nBook.add(frameTwo, text='T2')
frameOne.bind("<<NotebookTabChanged>>", self.routine())
frameTwo.bind("<<NotebookTabChanged>>", self.routine())
例程()是一個函數,應在每次選擇T2時執行檢查
def routine(self):
if str(nBook.index(nBook.select())) == "2":
# Do stuff
else:
pass
問題在於,更改選項卡后,它什么都不做,除了在我打開應用程序后立即調用例程函數,再也沒有。 我只是不知道我在做什么錯。
有人可以指出我正在犯的錯誤嗎?
編輯:如果我嘗試同樣的問題
nBook.bind("<<NotebookTabChanged>>", self.xbRoutine())
錯誤來自事件綁定語句:使用self.routine()
時,在執行bind
語句時(而不是在事件觸發時self.routine()
調用回調。 為了獲得正確的行為, bind
的第二個參數應該是函數的名稱,而不是對此函數的調用,因此只需刪除括號即可。
另一個錯誤:使用bind
,回調函數應具有用於存儲事件參數的第一個參數(傳統上稱為event
)。 因此,您應該將回調定義為:
def routine(self, event):
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.