【问题标题】:Creating a menuBar in a frame?在框架中创建菜单栏?
【发布时间】:2014-07-21 06:55:00
【问题描述】:
import Tkinter as tk
from Tkinter import Label, StringVar, Entry, Button, Menu, Frame, Tk, Canvas
import subprocess
from Tkconstants import LEFT, CENTER,W, SUNKEN , X, Y

class SampleApp(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)
            print "Hellooo Stack"
            self.frames = {}
            for F in (MainWindow,Master):
                frame = F(container, self)
                self.frames[F] = frame

                frame.grid(row=0, column=0, sticky="nsew")

            self.show_frame(MainWindow)

        def show_frame(self, c):
            '''Show a frame for the given class'''
            frame = self.frames[c]
            frame.tkraise()
class MainWindow(tk.Frame):
        def __init__(self, parent, controller):
            tk.Frame.__init__(self, parent)

            button = tk.Button(self, text="Connections",compound=LEFT)
            button.pack(pady=50)
            button1 = tk.Button(self, text="   Locker            ", compound=LEFT,
                                    command=lambda: controller.show_frame(Master))
            button1.pack(pady=50)

class Master(tk.Frame): 
       def __init__(self, parent, controller):
            tk.Frame.__init__(self, parent)
            menubar = Menu(self)
            filemenu = Menu(menubar,tearoff=0)
            filemenu.add_command(label="New",)
            filemenu.add_command(label="Open",)
            filemenu.add_command(label="Save As..")
            filemenu.add_command(label="Colour")
            filemenu.add_command(label="Close")
            menubar.add_cascade(label="File",menu=filemenu)
            controller.configure(menu = menubar)
if __name__ == "__main__":

        app = SampleApp()
        app.title("APPS")

        app.mainloop()

我发布的上述代码工作正常,但菜单显示在所有窗口中,但我希望菜单仅显示在一个窗口中....我使用了 controller.configure,因此菜单显示在所有窗口中,但如果我使用 self.configure 我收到一个错误...有人可以帮帮我吗

【问题讨论】:

  • 当您说“在一个框架中”时,您的字面意思是在一个框架中吗?或者,您是否尝试将标准菜单栏添加到主窗口?
  • 我的意思是只在那个框架中主而不是在所有框架中......如果我将 controller.configure(menu=menubar) 放在 self.configure 的位置,我将在所有框架中获取菜单...但我只想在一帧中
  • @BryanOakley 你能帮我吗?因为我可以添加菜单
  • 如果您需要更多关于菜单栏的帮助,您可以在这里找到:tutorialspoint.com/python/tk_menu.htm

标签: python tkinter


【解决方案1】:

您不能将菜单附加到框架。唯一带有菜单选项的小部件是根窗口和顶层窗口。

如果您想将菜单放在框架内,您需要创建一个框架,添加一个或多个 Menubutton 小部件,并为每个小部件附加一个菜单。

【讨论】:

  • 我是 tk 新手,请您在我的代码中添加该部分
  • 能否请您运行我的代码,看看我在主窗口和主框架中都获得了菜单栏...我只是想要主框架中的菜单栏
  • @user9213:我不需要运行你的代码。就像我说的,您不能将菜单附加到框架上,只能附加到顶层窗口。如果您希望菜单仅在某个时候出现,您始终可以在一个框架可见时将其从主窗口中删除,并在另一框架可见时添加它。
  • 请你给我看一个例子,其中菜单在一帧中可见,而在另一帧中不可见...我会很有帮助的..!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-24
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 2021-05-26
  • 1970-01-01
  • 2012-06-07
相关资源
最近更新 更多