2014-01-08 63 views
0

我想用多個複選框打開一個MessageBox來選擇一些選項。 MessageBox工作正常,但我無法訪問複選框的狀態。 我可以切換複選框(訪問課堂作品),但我無法獲得狀態。 如何取回主窗口中的複選框狀態?無法獲取MessageWindow中的複選框狀態

怎樣的程序應該工作: 主窗口可以創建ChooseBox ChooseBox應該給選項中進行選擇(用於測試例如這裏一個選項) 拜見窗口應獲取狀態(與測試按鈕這裏測試) (用python27工作和窗口 - 但在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) 

回答

1

你不能有兩個TK(窗口),Tk的窗口是唯一的,只能被調用一次。相反,用Toplevel替換您的選擇框中的Tk。除此之外,我認爲它應該工作

相關問題