python tkinter选项菜单帮助-对象没有属性'_根';

python tkinter选项菜单帮助-对象没有属性'_根';,python,tkinter,attributeerror,optionmenu,Python,Tkinter,Attributeerror,Optionmenu,下面是我第一次尝试GUI时的一段代码 当按下“提交”按钮时,我想在按钮下方显示标签和选项菜单。我已经让标签工作,并四处寻找解决方案,但我就是无法让选项菜单工作。任何帮助都将不胜感激 我收到的错误是: self._root = master._root() AttributeError: 'MyApp' object has no attribute '_root' 我的代码: from tkinter import * class MyApp: def __init__(self

下面是我第一次尝试GUI时的一段代码

当按下“提交”按钮时,我想在按钮下方显示标签和选项菜单。我已经让标签工作,并四处寻找解决方案,但我就是无法让选项菜单工作。任何帮助都将不胜感激

我收到的错误是:

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.fumeEntryOM = OptionMenu(self, self.fumeEntryOM, '1', '2', '3')
应该是:

self.fumeEntryOM = OptionMenu(self, self.fumeEntry, '1', '2', '3')

这就是问题所在

self.fumeEntry = StringVar(self)

self.fumeEntryOM = OptionMenu(self, self.fumeEntryOM, '1', '2', '3')
这些小部件的主部件或父部件必须是Tkinter小部件
self
(指MyApp类)只是一个类,而不是Tkinter小部件

你有两个选择

  • 使MyApp成为Tk()小部件的子类

  • 使self.master的StringVar和OptionMenu成为从属

    self.fumeEntry = StringVar(self.master)
    # extra code
    self.fumeEntryOM = OptionMenu(self.master, self.fumeEntry, "1", "2", "3")
    

  • 粘贴的代码存在一些格式问题。您可能希望修复它们,以便我们能提供更多帮助。具体来说,前两行和最后一行前面似乎需要4个空格,而且还不清楚dostuff_按钮和inputfumelevel是否应该是方法或函数。Woops抱歉。我想我已经解决了格式问题。根据我有限的编程经验,dostuff_按钮和inputfumelevel都是函数。你能添加回溯吗?我相信您收到的错误来自内部文件。您好,samort7,感谢您指出这一点。不幸的是,我仍然收到相同的错误,即使您正确地指出了我的代码的问题。没有问题。看看这个页面,看看他们是如何设置一个类的:你混合了“master”和“root”。如果我的记忆正确,这些都是没有意义的关键字,但是它们在你的程序中应该是一致的。
    self.fumeEntry = StringVar(self.master)
    # extra code
    self.fumeEntryOM = OptionMenu(self.master, self.fumeEntry, "1", "2", "3")