我刚刚开始用Python/Tkinter编写一个小Pymol插件。在这里,我试图有一个切换按钮,并报告其状态时,点击。按钮上下浮动,但toggleAVA
永远不会被调用。有什么想法为什么?在
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)
我用
Pymol
测试了你的代码。在问题是因为您使用}一起正常工作。在
Tk()
来创建窗口。您必须使用Toplevel()
,然后它将与trace()
或{Pymol
是用tkinter
创建的,它只能有一个用^{Toplevel()
创建其他窗口。在我在下面附上了你的代码的工作版本。你可以参考它来了解你哪里做错了。通常,如果使用类,则必须注意如何构造代码格式。这个将帮助您更好地可视化代码和调试。你可以阅读这个discussion来帮助你。在
更新:以上代码结构适用于独立tkinter程序。我试图转换这个工作代码,以遵循Pymol插件的例子。修订后的代码张贴在下面,可以进一步修订。在
^{pr2}$相关问题 更多 >
编程相关推荐