首页 > 解决方案 > 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'

标签: pythonpython-3.xtkinterattributeerror

解决方案


我的带有 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()

和输出:

在此处输入图像描述


推荐阅读