这是我第一次尝试 GUI 时的一段代码。
当按下“提交”按钮时,我想在按钮下方显示一个标签和选项菜单。我已经让标签工作了,并四处寻找解决方案,但我就是无法让 OptionMenu 工作。任何帮助将不胜感激!
我收到的错误是:
self._root = master._root()
AttributeError: 'MyApp' object has no attribute '_root'
我的代码:
from tkinter import *
class MyApp:
def __init__(self, master):
self.master = master
master.title("My Application")
master.minsize(width=800, height=800)
master.maxsize(width=800, height=800)
##### Setup & Display the Labels
self.headerLabel = Label(master, text="Label")
self.headerLabel.grid(row=0, sticky=E)
self.headerEntry = Label(master, text="Enter")
self.headerEntry.grid(row=0, column=1, sticky=N)
##### Submit Button
self.getButton = Button(root, text="Submit", command=self.dostuff_button)
self.getButton.grid(row=7, column=1)
def dostuff_button(self):
self.inputfumelevel()
def inputfumelevel(self):
self.inpfumeLabel = Label(text="Input Your Fume Level")
self.inpfumeLabel.grid(row=12, column=0)
self.fumeEntry = StringVar(self)
self.fumeEntry.set("Select Fume")
self.fumeEntryOM = OptionMenu(self, self.fumeEntryOM, '1', '2', '3')
self.fumeEntryOM.grid(row=12, column=1)
root = Tk()
my_gui = MyApp(root)
root.mainloop()
最佳答案
这就是问题所在。
self.fumeEntry = StringVar(self)
self.fumeEntryOM = OptionMenu(self, self.fumeEntryOM, '1', '2', '3')
这些小部件的主部件或父部件必须是 Tkinter 小部件。 self
(指 MyApp 类)只是一个类,而不是 Tkinter 小部件。
您有两种选择。
使 MyApp 成为 Tk() 小部件的子类
class MyApp(Tk): # extra code goes here
使 StringVar 和 OptionMenu 成为 self.master 的从属。
self.fumeEntry = StringVar(self.master) # extra code self.fumeEntryOM = OptionMenu(self.master, self.fumeEntry, "1", "2", "3")
关于python tkinter选项菜单帮助-对象没有属性 '_root',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30045519/