如何设置和自定义 tkinterguizero 菜单栏样式?


Tkinter 和 Guizero 是用于创建 GUI 的流行 Python 库,在增强用户体验方面,自定义菜单栏是一个关键的考虑因素。在本教程中,我们将重点介绍在 Tkinter 和 Guizero 中设置样式和自定义菜单栏的技术。

了解 Tkinter 和 Guizero

在深入自定义之前,让我们简要概述一下 Tkinter 和 Guizero。

  • Tkinter − Tkinter 是 Python 附带的标准 GUI 工具包。它提供了一套用于创建图形用户界面的工具,并广泛用于开发桌面应用程序。Tkinter 包含各种小部件,菜单栏是组织和访问不同功能的关键组件。

  • Guizero − Guizero 是一个更简单、更轻量级的 Python GUI 库。它构建在 Tkinter 之上,旨在对初学者友好。Guizero 提供易于使用的函数来创建窗口、按钮和菜单栏,使其成为中小型项目的绝佳选择。

创建基本菜单栏

在自定义之前,让我们使用 Tkinter 和 Guizero 创建一个基本菜单栏。

示例:Tkinter 菜单栏

请查看以下示例 -

import tkinter as tk

def dummy_command():
   print("This is a dummy command.")

root = tk.Tk()
root.geometry("720x250")
root.title("Tkinter Menu Bar")

# Creating a menu bar
menu_bar = tk.Menu(root)

# Adding File menu
file_menu = tk.Menu(menu_bar, tearoff=0)
file_menu.add_command(label="Open", command=dummy_command)
file_menu.add_command(label="Save", command=dummy_command)
file_menu.add_separator()
file_menu.add_command(label="Exit", command=root.destroy)
menu_bar.add_cascade(label="File", menu=file_menu)

# Adding Edit menu
edit_menu = tk.Menu(menu_bar, tearoff=0)
edit_menu.add_command(label="Cut", command=dummy_command)
edit_menu.add_command(label="Copy", command=dummy_command)
edit_menu.add_command(label="Paste", command=dummy_command)
menu_bar.add_cascade(label="Edit", menu=edit_menu)

# Displaying the menu bar
root.config(menu=menu_bar)

# Running the GUI
root.mainloop()

输出

运行以上脚本将为您提供以下带有基本菜单栏的 Tkinter 窗口 -

示例:Guizero 菜单栏

请查看以下示例 -

from guizero import App, MenuBar

def dummy_command():
   print("This is a dummy command.")

app = App("Guizero Menu Bar")

# Creating a menu bar
menu_bar = MenuBar(
   app, toplevel=["File", "Edit"], 
   options=[
      [ ["Open", dummy_command], ["Save", dummy_command], ["Exit", app.destroy] ],
      [ ["Cut", dummy_command], ["Copy", dummy_command], ["Paste", dummy_command] ]
   ]
)

# Displaying the menu bar
app.display()

输出

运行以上脚本将为您提供以下带有基本菜单栏的 Guizero 窗口 -

这些基本示例创建了一个包含“文件”和“编辑”菜单的菜单栏窗口。现在,让我们继续自定义这些菜单栏。

设置 Tkinter 菜单栏样式

让我们了解如何设置和自定义 Tkinter 菜单栏的样式。

更改颜色

Tkinter 允许您更改菜单栏和菜单项的背景和前景色。以下代码片段演示了如何自定义颜色 -

# Changing menu bar color
menu_bar.config(bg="lightblue")

# Changing menu item colors
file_menu.config(bg="lightblue", fg="black")
edit_menu.config(bg="lightblue", fg="black")

添加图标

Tkinter 允许您向菜单项添加图标,从而提供更具视觉吸引力的界面。要添加图标,您可以将 compound 选项与 label 属性一起使用 -

from tkinter import PhotoImage

# Create an image object
icon = PhotoImage(file="icon.png")

# Adding icon to a menu item
file_menu.add_command(label="Open", command=dummy_command, image=icon, compound="left")

自定义 Guizero 菜单栏

Guizero 通过提供有限的选项来简化自定义过程。但是,您仍然可以获得视觉上令人愉悦的菜单栏。

更改颜色

Guizero 允许您设置菜单栏的背景颜色。以下代码片段演示了如何自定义颜色 -

# Changing menu bar color
menu_bar.bg = "lightblue"

添加图标

Guizero 没有内置对菜单项中图标的支持,但是您可以通过创建带有图像的自定义按钮来实现类似的效果 -

from guizero import PushButton

# Create an image object
icon = "icon.png"

# Adding icon to a menu item
open_button = PushButton(app, image=icon, command=dummy_command)

结论

自定义 Tkinter 和 Guizero 中的菜单栏极大地提升了 Python GUI 应用程序的视觉吸引力和用户体验。无论您选择 Tkinter 的广泛自定义选项还是 Guizero 的简单性,在美观和功能之间找到合适的平衡至关重要。

更新于: 2024年2月15日

195 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告