从Python脚本获取复选框状态嵌入在另一个脚本

问题描述:

我想从Python 2.7中的Tkinter Gui打开一个单独的窗口。新窗口有复选框,并基于复选框状态,我打算有一个按钮来运行一些任务。我的问题是,当我为新窗口嵌入脚本并将复选框复选到现有的pythons脚本中时,复选框的变量状态始终为“0”。当我本身运行的复选框剧本,一切正常......这里是我的代码:从Python脚本获取复选框状态嵌入在另一个脚本

from Tkinter import * 
import Tkinter 
import tempfile 

root = Tkinter.Tk() 
root.title("Main Window") 
root.geometry("200x225") 

def NewWindow(): 
    master = Tk() 
    master.title("Select Unit Load Components") 
    master.geometry("400x500") 

    var1 = Tkinter.IntVar() 
    var2 = Tkinter.IntVar() 
    var3 = Tkinter.IntVar() 
    var4 = Tkinter.IntVar() 
    var5 = Tkinter.IntVar() 
    var6 = Tkinter.IntVar() 

    def var_states(): 
     print("FX: %d, FY: %d, FZ: %d, MX: %d, MY: %d, MZ: %d" % (var1.get(), var2.get(), var3.get(),var4.get(), var5.get(), var6.get())) 

    Checkbutton(master, text="FX", variable=var1).grid(row=1,column=1, sticky=W) 
    Checkbutton(master, text="FY", variable=var2).grid(row=1,column=2, sticky=W) 
    Checkbutton(master, text="FZ", variable=var3).grid(row=1,column=3, sticky=W) 
    Checkbutton(master, text="MX", variable=var4).grid(row=1,column=4, sticky=W) 
    Checkbutton(master, text="MY", variable=var5).grid(row=1,column=5, sticky=W) 
    Checkbutton(master, text="MZ", variable=var6).grid(row=1,column=6, sticky=W) 

    Button(master, text='Show', command=var_states).grid(row=3, sticky=W, pady=4) 
    mainloop() 

Bttn1 = Tkinter.Button(root, text ="Open Sub Window", command = NewWindow) 
Bttn1.pack(side = TOP,padx=10,pady=5) 

Bttn3=Tkinter.Button(root, text='Exit', command = root.quit) 
Bttn3.pack(side = TOP,padx=50,pady=30) 

root.mainloop() 
+1

很确定你应该只运行一次mainloop。 – Muposat

这是因为你已经有了另一WM(root = tkinter.Tk()master = Tk())。
您可以使用:master = tkinter.TopLevel(…)
而且,当然,只有一个主循环。