我想打开一个带有多个Checkbox的MessageBox来选择一些选项。 MessageBox有效,但我无法访问复选框的状态。 我可以切换复选框(访问类工作),但我无法获得状态。 如何在主窗口中取回Checkboxes状态?
该计划应如何运作: 主窗口可以创建ChooseBox ChooseBox应该提供选项(这里有一个选项用于测试示例) Mein窗口将获得状态(使用测试按钮在此测试) (使用python27和windows - 但在ubuntu上它既不起作用)
#!/usr/bin/python3
# -*- coding: cp1252 -*-
from Tkinter import *
class ChooseBox(Tk):
def __init__(self):
Tk.__init__(self)
self.var = IntVar()
self.chk = Checkbutton(self, text="Option 1", variable=self.var)
self.chk.pack()
# Button to show the status of the checkbutton
button = Button(self, text='Show Stat',
command=lambda: self.Status(self.var))
button.pack()
def Status(self, var):
print var.get()
def message():
global Choose
Choose = ChooseBox()
Choose.mainloop()
def test():
global Choose
Choose.chk.toggle()
print Choose.var.get()
def main_wrapper(argv):
global Choose
root = Tk()
root.geometry("200x150+30+30")
Button_Frame=Frame(root)
Button_Frame.pack(side=BOTTOM, anchor=W, fill=X, expand=NO)
Button(Button_Frame, text='Make ChooseBox', command=message).pack(side=LEFT, anchor=W, padx=5, pady=5)
# Button to test access to the Box - here it toggles the Checkbutton and (should) prints the status
Button(Button_Frame, text='test', command=test).pack(side=LEFT, anchor=W, padx=5, pady=5)
Button(Button_Frame, text='Quit', command=root.quit).pack(side=RIGHT, anchor=E, padx=5)
root.mainloop()
if __name__ == '__main__':
main_wrapper(sys.argv)
答案 0 :(得分:1)
你不能有两个Tk()窗口,Tk窗口是唯一的,只能被调用一次。而是用Toplevel替换选择框中的Tk。除此之外,我认为它应该工作