簡體   English   中英

如何在Tkinter中更改按鈕的狀態?

[英]How to change the state of a button in Tkinter?

我正在嘗試學習Tkinter模塊的基礎知識,例如制作按鈕,復選框和其他基本小部件。 我想創建一個帶有兩個復選框“ music”和“ video”以及一個按鈕“ proceded”的窗口,以便僅在選中“ music”復選框時該按鈕才“啟用”。 在搜索有關該主題的更多信息時,我使用了示蹤劑,但是我無法理解函數callme的以下定義(即,在爭論中使用*)。 我正在使用ubuntu 12.04和python 2.7,下面鍵入了我鍵入的代碼。

import tkMessageBox
import Tkinter
top = Tkinter.Tk()
CheckVar1 = Tkinter.IntVar()
CheckVar2 = Tkinter.IntVar()
C1 = Tkinter.Checkbutton(top, text = "Music", variable = CheckVar1, \
         onvalue = 1, offvalue = 0, height=5, \
         width = 20)
C2 = Tkinter.Checkbutton(top, text = "Video", variable = CheckVar2, \
         onvalue = 1, offvalue = 0, height=5, \
         width = 20)
def callme(* args):
   if args[2] == 'w':
   b1['state'] = 'normal'    
def exit():
    pass
b1 = Tkinter.Button(top, text = "Proceed", command = exit)
b1['state'] = 'disabled'
C1.pack()
C2.pack()
b1.pack() 
CheckVar1.trace("w", callme) 
CheckVar2.trace("w", callme)
top.mainloop()

另外,有人可以告訴我如何將更多參數傳遞給callme函數。

callme應如下:

def callme(*args):
    if CheckVar1.get() or CheckVar2.get():
        b1['state'] = 'normal'
    else:
        b1['state'] = 'disabled'

如何將更多參數傳遞給callme函數

使用lambda

def callme(msg, extra1, extra2):
    print msg, extra1, extra2
    if CheckVar1.get() or CheckVar2.get():
        b1['state'] = 'normal'
    else:
        b1['state'] = 'disabled'
...

CheckVar1.trace("w", lambda *args: callme('checkvar1 changed', 'blah', 'blah'))
CheckVar2.trace("w", lambda *args: callme('checkvar2 changed', 'xxx', 'yyy'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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