我剛開始在Python/Tkinter中編寫一個小Pymol插件。在這裏,我試圖設置一個切換按鈕,並在點擊時報告它的狀態。按鈕上下移動,但toggleAVA
永遠不會被調用。任何想法爲什麼?IntVar()。trace()不起作用
from Tkinter import *
import tkMessageBox
class AVAGnome:
def __init__(self, master):
# create frames
self.F1 = Frame(rootGnome, padx=5, pady=5, bg='red')
# checkbuttons
self.AVAselected = IntVar()
self.AVAselected.trace("w", self.toggleAVA)
self.AVAbutton = Checkbutton(self.F1, text='AVA', indicatoron=0, variable=self.AVAselected)
# start layout procedure
self.layout()
def layout(self):
self.F1.pack(side=TOP, fill=BOTH, anchor=NW)
#entry and buttons
self.AVAbutton.pack(side=LEFT)
def toggleAVA(self, *args):
if (self.AVAselected.get()):
avastatus = "selected"
else:
avastatus = "unselected"
tkMessageBox.showinfo("AVA status", avastatus)
def __init__(self):
open_GnomeUI()
def open_GnomeUI():
# initialize window
global rootGnome
rootGnome = Tk()
rootGnome.title('AVAGnome')
global gnomeUI
gnomeUI = AVAGnome(rootGnome)
'Checkbutton'有選項'command ='所以可以使用'command = self.toggleAVA'而不是'trace()' – furas
是的,但這只是一個非常基本的例子。如果用另一種方式「self.AVAselected」,我可能希望改變狀態。無論如何,我試圖理解爲什麼應該工作的功能不是 – ipetrik
另外,我確實嘗試過(使用'command'),並且'self.AVAselected'的狀態被報告爲'unselected',而不管該按鈕是向上或向下。 – ipetrik