【发布时间】: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