首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tkinter menubar类

Tkinter menubar类
EN

Stack Overflow用户
提问于 2016-02-06 18:45:13
回答 1查看 2.1K关注 0票数 1

我试图通过创建菜单栏及其内容的类来提高代码的效率。没有任何错误被报告,但它不会成为酒吧。(我确实让它在没有类的情况下工作,但似乎不能再工作了!)

代码语言:javascript
复制
from Tkinter import *

class MenuBar: #'player' is the name of the Tk window
    def __init__(self, menuname, Label, Drop_Label, Command, Separator = False):
        self.menubar = Menu(player)
        self.menuname = Menu(self.menubar, tearoff = 0)
        self.menuname.add_command(label = Label, command = Command)

        if Separator == True:
            self.menuname.add_separator()

        self.menubar.add_cascade(label = Drop_Label, menu = menuname)

        self.Create()

    def Create(self):
        player.config(menu = self.menubar)

#example menu item
def addMenuBar():
    exitMenu = MenuBar("filemenu", "Exit", "File", onExit, True)
    #More menu items here, function to keep it tidier.

def onExit():
    #Code here

player = Tk()

addMenuBar()

player.mainloop()

这确实绘制了Tk窗口,但是没有菜单栏选项,我哪里出错了?干杯。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-06 20:19:51

__init__函数中,只需创建一个菜单栏。

创建一个函数,将菜单和接受命令作为元组列表:

代码语言:javascript
复制
from Tkinter import *

class MenuBar: #'player' is the name of the Tk window
    def __init__(self, parent):
        self.menubar = Menu(parent)
        self.Create()

    def Create(self):
        player.config(menu = self.menubar)

    def add_menu(self, menuname, commands):
        menu = Menu(self.menubar, tearoff = 0)

        for command in commands:
            menu.add_command(label = command[0], command = command[1])
            if command[2]:
                menu.add_separator()

        self.menubar.add_cascade(label=menuname, menu=menu)

def onExit():
    import sys
    sys.exit()

def onOpen():
    print 'Open'

player = Tk()

menubar = MenuBar(player)

fileMenu = menubar.add_menu("File", commands = [("Open", onOpen, True), ("Exit", onExit, False)])

player.mainloop()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35244963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档