簡體   English   中英

Python TK筆記本選項卡更改檢查

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM