📜  python中的菜单(1)

📅  最后修改于: 2023-12-03 15:04:37.217000             🧑  作者: Mango

Python中的菜单

菜单是图形用户界面(GUI)中常用的控件之一,它可以让用户通过点击菜单项来执行相应的操作。在Python中,有多种库和框架可以实现菜单。

1. Tkinter

Tkinter是Python内置的标准GUI库,它提供了创建菜单的方法。下面是一个简单的示例代码:

import tkinter as tk

def do_nothing():
    filewin = tk.Toplevel(root)
    button = tk.Button(filewin, text="Do nothing button")
    button.pack()

root = tk.Tk()

menubar = tk.Menu(root)
filemenu = tk.Menu(menubar, tearoff=0)
filemenu.add_command(label="New", command=do_nothing)
filemenu.add_command(label="Open", command=do_nothing)
filemenu.add_command(label="Save", command=do_nothing)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)

editmenu = tk.Menu(menubar, tearoff=0)
editmenu.add_command(label="Cut", command=do_nothing)
editmenu.add_command(label="Copy", command=do_nothing)
editmenu.add_command(label="Paste", command=do_nothing)
menubar.add_cascade(label="Edit", menu=editmenu)

root.config(menu=menubar)
root.mainloop()

这段代码创建了一个窗口,并在窗口中创建了一个菜单栏。菜单栏包含两个菜单:File和Edit,每个菜单包含若干个菜单项。当用户点击菜单项时,通过指定的回调函数执行相应的操作。

2. PyQt5

PyQt5是一个流行的Python GUI框架,它包含了创建菜单的方法。下面是一个简单的示例代码:

from PyQt5.QtWidgets import QApplication, QMainWindow, QAction

class Example(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.statusBar()

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('File')
        editMenu = menubar.addMenu('Edit')

        newAct = QAction('New', self)
        fileMenu.addAction(newAct)

        saveAct = QAction('Save', self)
        fileMenu.addAction(saveAct)

        cutAct = QAction('Cut', self)
        editMenu.addAction(cutAct)

        copyAct = QAction('Copy', self)
        editMenu.addAction(copyAct)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Menu')
        self.show()

if __name__ == '__main__':
    app = QApplication([])
    ex = Example()
    app.exec_()

这段代码创建了一个窗口,并在窗口中创建了一个菜单栏。菜单栏包含两个菜单:File和Edit,每个菜单包含若干个菜单项。当用户点击菜单项时,通过指定的回调函数执行相应的操作。

3. wxPython

wxPython是一个开源的Python GUI框架,它基于C++的wxWidgets实现。下面是一个简单的示例代码:

import wx

class Example(wx.Frame):
    def __init__(self, *args, **kwargs):
        super(Example, self).__init__(*args, **kwargs)

        self.InitUI()

    def InitUI(self):
        menubar = wx.MenuBar()
        fileMenu = wx.Menu()
        editMenu = wx.Menu()

        newMenuItem = fileMenu.Append(wx.ID_NEW, '&New')
        saveMenuItem = fileMenu.Append(wx.ID_SAVE, '&Save')
        fileMenu.AppendSeparator()
        quitMenuItem = fileMenu.Append(wx.ID_EXIT, '&Quit')

        cutMenuItem = editMenu.Append(wx.ID_CUT, '&Cut')
        copyMenuItem = editMenu.Append(wx.ID_COPY, '&Copy')

        menubar.Append(fileMenu, '&File')
        menubar.Append(editMenu, '&Edit')

        self.SetMenuBar(menubar)

        self.Bind(wx.EVT_MENU, self.OnQuit, quitMenuItem)

        self.SetSize((300, 200))
        self.SetTitle('Menu')
        self.Centre()
        self.Show(True)

    def OnQuit(self, e):
        self.Close()

if __name__ == '__main__':
    app = wx.App()
    Example(None)
    app.MainLoop()

这段代码创建了一个窗口,并在窗口中创建了一个菜单栏。菜单栏包含两个菜单:File和Edit,每个菜单包含若干个菜单项。当用户点击菜单项时,通过指定的回调函数执行相应的操作。

4. 总结

以上是Python中三种常用GUI库和框架中创建菜单的示例代码。通过使用这些库和框架,程序员可以方便地创建出漂亮而实用的菜单。