Python 带有单个主循环的多个窗口上的选项菜单
单击按钮newGui将显示新窗口,但所选值不会显示在第二个optionmenu小部件上。当我打印self.op2.get()或print num时,它会打印所选的值。如何使第二个选项菜单正常运行?出现此问题是因为在Python 带有单个主循环的多个窗口上的选项菜单,python,tkinter,Python,Tkinter,单击按钮newGui将显示新窗口,但所选值不会显示在第二个optionmenu小部件上。当我打印self.op2.get()或print num时,它会打印所选的值。如何使第二个选项菜单正常运行?出现此问题是因为在Omenu2类中,您正在创建一个新的Tk()应用程序 此外,除非为拥有组件的应用程序调用.mainloop(),否则其小部件不会得到更新 另外,我认为你真的不需要一个新的Tk()应用程序本身。如果希望新选项菜单出现在新窗口中,则应使用 范例- guiOpmenu2.py- import
Omenu2
类中,您正在创建一个新的Tk()
应用程序
此外,除非为拥有组件的应用程序调用.mainloop()
,否则其小部件不会得到更新
另外,我认为你真的不需要一个新的Tk()
应用程序本身。如果希望新选项菜单出现在新窗口中,则应使用
范例-
guiOpmenu2.py-
import Tkinter as tk
import guiOpMenu2
class Omenu(object):
def __init__(self):
self.app = tk.Tk()
self.app.title('test1')
self.OpMenu()
self.btn()
def OpMenu(self):
self.op = tk.StringVar()
self.opt =['1', '2']
self.men = tk.OptionMenu(self.app, self.op, *self.opt)
self.men.pack()
def btn(self):
self.btn_btn = tk.Button(self.app, text='newGui', command=self.test)
self.btn_btn.pack()
def test(self):
win = guiOpMenu2.Omenu2()
win = Omenu()
win.app.mainloop()
import Tkinter as tk
class Omenu2(object):
def __init__(self):
self.app = tk.Tk()
self.app.title('test1')
self.OpMenu2()
def OpMenu2(self):
self.op2 = tk.StringVar()
self.opt2 =['2', '3']
self.men2 = tk.OptionMenu(self.app, self.op2, *self.opt2, command=self.test)
self.men2.pack()
def test(self, num):
print self.op2.get()
print num
你的主要剧本-
import Tkinter as tk
class Omenu2(object):
def __init__(self, app):
self.app = app
self.master = tk.Toplevel(app)
self.master.title('test1')
self.OpMenu2()
def OpMenu2(self):
self.op2 = tk.StringVar()
self.opt2 =['2', '3']
self.men2 = tk.OptionMenu(self.master, self.op2, *self.opt2, command=self.test)
self.men2.pack()
def test(self, num):
print self.op2.get()
print num
import Tkinter as tk
import guiOpMenu2
class Omenu(object):
def __init__(self):
self.app = tk.Tk()
self.app.title('test1')
self.OpMenu()
self.btn()
def OpMenu(self):
self.op = tk.StringVar()
self.opt =['1', '2']
self.men = tk.OptionMenu(self.app, self.op, *self.opt)
self.men.pack()
def btn(self):
self.btn_btn = tk.Button(self.app, text='newGui', command=self.test)
self.btn_btn.pack()
def test(self):
win = guiOpMenu2.Omenu2(self.app)
win = Omenu()
win.app.mainloop()