Python 带有单个主循环的多个窗口上的选项菜单

Python 带有单个主循环的多个窗口上的选项菜单,python,tkinter,Python,Tkinter,单击按钮newGui将显示新窗口,但所选值不会显示在第二个optionmenu小部件上。当我打印self.op2.get()或print num时,它会打印所选的值。如何使第二个选项菜单正常运行?出现此问题是因为在Omenu2类中,您正在创建一个新的Tk()应用程序 此外,除非为拥有组件的应用程序调用.mainloop(),否则其小部件不会得到更新 另外,我认为你真的不需要一个新的Tk()应用程序本身。如果希望新选项菜单出现在新窗口中,则应使用 范例- guiOpmenu2.py- import

单击按钮newGui将显示新窗口,但所选值不会显示在第二个optionmenu小部件上。当我打印self.op2.get()或print num时,它会打印所选的值。如何使第二个选项菜单正常运行?

出现此问题是因为在
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()