首页 > 解决方案 > 我很难在我的 tkinter 应用程序中放置菜单

问题描述

我想我在编写此代码时所做的方式是打开所有窗口,然后在需要时显示它们我刚刚开始 tkinter 并开始按照我想要的方式塑造它。我有多个窗口,但只显示我希望菜单显示的第一个窗口的代码,这就是为什么我在显示框架中有一个 try 和 except 子句。我在另一个 stackoverflow 问题上发现了一个类似的代码,我遇到了同样的问题,但修复不起作用,我不知道该怎么做。请帮忙。这是我的代码:

class TradingBotapp(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,Login,Register,Main_Page,InitalSetup):
            frame = F(container,self)
            self.frames[F] = frame
            frame.grid(row=0,column=0,sticky='nsew')

        self.show_frame(Main_Page)

    def show_frame(self,cont):
        frame = self.frames[cont]
        try:
            self["menu"] = frame.menu
        except Exception as e:
            print(e)
        frame.tkraise()

class Main_Page(tk.Frame):

    def __init__(self,parent,controller):
        tk.Frame.__init__(self,parent)
        self.init_window(controller)
        label = tk.Label(self, text='Main Page', font = LARGE_FONT).pack()


    def init_window(self,controller):
        StockWatchList = ['Dave','Pam','Girl','Guy','Boy']

        self.grid(column=0,row=0)
        menu = tk.Menu(self)
        file = tk.Menu(menu)
        file.add_command(label='Exit')

        StockWatch = tk.Menu(menu)
        for stock in StockWatchList:
            StockWatch.add_command(label=stock)

        self.menu
app = TradingBotapp()
app.mainloop()

关于stackoverflow问题的修复是放入self["menu"] = frame.menu显示框架并将其放置self.menu在您想要显示的位置而不是放置我认为self.master.config(menu=menu)任何帮助将不胜感激谢谢!

标签: python-3.xtkintermenu

解决方案


推荐阅读