import tkinter as tk
from tkinter import *
import tkinter.ttk
class window1( Frame ):
def __init__( self ):
tk.Frame.__init__(self)
self.pack()
self.master.title("MANAGEMENT")
self.button1 = Button( self, text = "ENTRY", width = 25,command = self.GUI)
self.button1.grid( row = 0, column = 1, columnspan = 2, sticky = W+E+N+S )
self.button2 = Button( self, text = "SHOW BILL", width = 25 )
self.button2.grid( row = 1, column = 1, columnspan = 2, sticky = W+E+N+S )
self.button3 = Button( self, text = "MEMBERS", width = 25)
self.button3.grid( row = 2, column =1 , columnspan = 2, sticky = W+E+N+S )
def GUI(self):
self.GUI= GUI()
class GUI(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.buttonDic = {
'1':0,
'2':0,
'3':0,
'4':0
}
for key in self.buttonDic:
self.buttonDic[key] = tk.IntVar()
aCheckButton = tk.Checkbutton(self, text=key,
variable=self.buttonDic[key])
aCheckButton.grid(sticky='w')
submitButton = tk.Button(self, text="Submit",
command=self.query_checkbuttons)
submitButton.grid()
def query_checkbuttons(self):
for key, value in self.buttonDic.items():
state = value.get()
if state != 0:
print(key)
self.buttonDic[key].set(0)
def main():
window1().mainloop()
if __name__ == '__main__':
main()
Tags:
您的问题是在代码中运行了两个Tk()实例。当您初始化没有父级的框架时,第一个隐藏在
window1
调用中,第二个隐藏在GUI
类中。由于没有指定IntVar
的父级,它们与第一个创建的窗口相关联,因此不是正确的窗口。你知道吗我通过以下方式修改了您的代码:
Window1
类从Tk
继承,因为您将它用作主窗口GUI
类从Toplevel
继承,以避免程序中有两个正在运行的Tk
实例IntVar
父级,因此没有歧义代码如下:
相关问题 更多 >
编程相关推荐