python - AttributeError:模块 'tkinter' 没有属性 'config'
问题描述
我正在尝试制作一个简单的菜单(目前),但我不断收到此错误:
class pyFinanceStart(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (StartPage):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(StartPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
container = tk.Frame(self)
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
menubar = tk.Menu(container)
topIndi = tk.Menu(menubar, tearoff=1)
topIndi.add_command(label="None")#,command=lambda: addTopIndicator('none'))
topIndi.add_separator()
topIndi.add_command ( label="RSI")#,command=lambda: addTopIndicator('rsi'))
topIndi.add_command ( label="MACD")#,command=lambda: addTopIndicator('macd'))
menubar.add_cascade(label = "Top Indicator", menu = topIndi)
helpmenu = tk.Menu(menubar, tearoff=0)
helpmenu.add_command(label="Help")
menubar.add_cascade(label="Help", menu=helpmenu)
tk.Tk.config(self, menu=menubar)
我有错误:AttributeError:模块'tkinter'没有属性'config'
解决方案
我的带有 Python 3.7.1 的 Windows 框中报告的错误与您的不同。我的是_tkinter.TclError: unknown option "-menu"
。这是因为menu
仅顶级容器支持选项,Frame
小部件不支持。
以下是基于您的修改的代码,可修复错误:
import tkinter as tk
class pyFinanceStart(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.geometry("300x100")
# make the frame using all the window area
self.rowconfigure(0, weight=1)
self.columnconfigure(0, weight=1)
# create the pages
self.frames = {}
for F in (StartPage,):
frame = F(self)
frame.grid(row=0, column=0, sticky="nsew")
self.frames[F] = frame
# show the start page
self.show_frame(StartPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class StartPage(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent, bg='blue')
tk.Label(self, text="Start Page", bg='#ffc').pack(fill='both', expand=1, padx=10, pady=10)
# create the menubar
menubar = tk.Menu(parent)
# create the 'Top Indicator' menu
topIndi = tk.Menu(menubar, tearoff=1)
topIndi.add_command(label="None")
topIndi.add_separator()
topIndi.add_command(label="RSI")
topIndi.add_command(label="MACD")
menubar.add_cascade(label="Top Indicator", menu=topIndi)
# create the 'Help' menu
helpmenu = tk.Menu(menubar, tearoff=0)
helpmenu.add_command(label="Help")
menubar.add_cascade(label="Help", menu=helpmenu)
# set the toplevel menubar
parent.config(menu=menubar) # or tk.Tk.config(parent, menu=menubar)
pyFinanceStart().mainloop()
和输出:
推荐阅读
- java - 如何从 FireStore 读取 ArrayList?
- javascript - 如何在数组中添加人物?
- css - 如何使组件中的按钮居中
- swift - 如何在不复制的情况下将“数据”对象放入 Swift-NIO?
- flutter - Flutter webapp在启动时很慢
- java - 是否可以在 docker 容器内从 java 执行 exe 文件
- sql - Oracle查询 - 根据另一列的顺序选择唯一的行号
- javascript - 在使用 await 时使用 catch 处理 Promise 拒绝
- mysql - 使用 PowerShell 将 MySQL blob(映像)迁移到 FileMaker 容器
- visual-studio-code - 有没有办法在 Visual Studio 中使用远程 ssh 对远程文件和本地文件进行并排比较?