【问题标题】:How to add Menu bar in custom tkinter如何在自定义 tkinter 中添加菜单栏
【发布时间】:2023-02-10 03:55:06
【问题描述】:

如何在我的自定义 TKinter 窗口中添加菜单栏?

我想在我的自定义 TKinter 窗口中添加一个菜单栏。

【问题讨论】:

  • 你可以按照这个。 pythontutorial.net/tkinter/tkinter-menu
  • 你的窗口代码是什么,为什么你认为它不添加菜单栏
  • 我不会自定义 tkinter 而不是 tkinter,因为我想要黑色背景以及更多自定义标题栏和所有内容
  • 请在提问时解释你尝试了什么以及你被困在哪里。这看起来像“请为我编写代码”。

标签: python tkinter


【解决方案1】:

CustomTkinter目前没有改变菜单栏的外观,它仍然很基本。许多 GUI 工具包都在避开传统菜单,转而使用完全可定制的 UI。

您最好的选择可能是使用 CTk 小部件构建您自己的小部件,例如CTk选项菜单或者组合框例如。

从可用性和可访问性的角度来看,使用传统的菜单系统有很多优势。

import customtkinter

customtkinter.set_appearance_mode("light")  
customtkinter.set_default_color_theme("dark-blue")

app = customtkinter.CTk()
app.title("CustomTkinter Sample Menu Bar.py")

def button_callback():
    print("Button click", combobox_1.get())

def change_appearance_mode_event(new_appearance_mode: str):
    customtkinter.set_appearance_mode(new_appearance_mode)

def change_scaling_event(new_scaling: str):
    new_scaling_float = int(new_scaling.replace("%", "")) / 100
    customtkinter.set_widget_scaling(new_scaling_float)


frame_1 = customtkinter.CTkFrame(master=app)
frame_1.grid(row=0, pady=10, padx=0)

optionmenu_1 = customtkinter.CTkOptionMenu(frame_1, values=["Option 1", "Option 2", "Option 42 long long long..."])
optionmenu_1.grid(row=0, column=0, pady=10, padx=10)
optionmenu_1.set("CTk Option Menu")

combobox_1 = customtkinter.CTkComboBox(frame_1, values=["Option 1", "Option 2", "Option 42 long long long..."])
combobox_1.grid(row=0, column=1, pady=10, padx=0)
combobox_1.set("CTk Combo Box")

appearance_mode_optionemenu = customtkinter.CTkOptionMenu(frame_1, values=["Light", "Dark", "System"], command=change_appearance_mode_event)
appearance_mode_optionemenu.grid(row=0, column=2, padx=0, pady=10)

scaling_optionemenu = customtkinter.CTkOptionMenu(frame_1, values=["80%", "90%", "100%", "110%", "120%"], command=change_scaling_event)
scaling_optionemenu.grid(row=0, column=3, padx=0, pady=10)

text_1 = customtkinter.CTkTextbox(master=frame_1, width=600, height=70)
text_1.grid(row=1, column=0, columnspan=4, pady=10, padx=10)
text_1.insert("0.0", "Lorem Ipsum adalah contoh teks atau dummy dalam industri percetakan dan penataan huruf atau typesetting. Lorem Ipsum telah menjadi standar contoh teks sejak tahun 1500an, saat seorang tukang cetak yang tidak dikenal mengambil sebuah kumpulan teks dan mengacaknya untuk menjadi sebuah buku contoh huruf. Ia tidak hanya bertahan selama 5 abad, tapi juga telah beralih ke penataan huruf elektronik, tanpa ada perubahan apapun. Ia mulai dipopulerkan pada tahun 1960 dengan diluncurkannya lembaran-lembaran Letraset yang menggunakan kalimat-kalimat dari Lorem Ipsum, dan seiring munculnya perangkat lunak Desktop Publishing seperti Aldus PageMaker juga memiliki versi Lorem Ipsum.")

app.mainloop()

【讨论】:

    猜你喜欢
    • 2021-09-20
    • 2016-10-03
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多