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

标签 python tkinter attributeerror optionmenu

这是我第一次尝试 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 小部件。

您有两种选择。

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

    class MyApp(Tk):
    # extra code goes here
    
  2. 使 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/

相关文章:

python - 使用 os.scandir() 引发 AttributeError : __exit__

python - AttributeError : 'NoneType' object has no attribute 'title' [closed]

python-3.x - AttributeError: 'NoneType' 对象没有属性 'media_player_new'

python - 如何区分两个具有相同类名的元素

Python 3 "Sideways"相对导入

python - Tkinter 窗口中 cv2 图像上的鼠标事件

python - 使用滚动条时, Canvas 内的 tkinter 框架不会扩展

python - 分析多进程 Python 脚本时出现神秘的 pickle 错误

python - 在 pandas 中查找子字符串

python - 将 tkinter 输入与 WHERE 语句 SQLite 连接