随笔 - 5, 文章 - 0, 评论 - 0, 阅读 - 325

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

GPT的tkinter学习之路(3)

Posted on   AusarPu  阅读(44)  评论(0编辑  收藏  举报

Task 1:使用菜单和对话框

预期效果:

  • 建立一个窗口,左上角是菜单栏,点击后会出现几个选项,如图
    image

code:

import tkinter as tk
from tkinter import messagebox, filedialog

# 创建主窗口
root = tk.Tk()
root.title("Tkinter 菜单和对话框示例")
root.geometry("400x300")

# 创建菜单栏
menu_bar = tk.Menu(root)

# 创建文件菜单
file_menu = tk.Menu(menu_bar, tearoff=0)
file_menu.add_command(label="Open", command=lambda: filedialog.askopenfilename())
file_menu.add_command(label="Save", command=lambda: filedialog.asksaveasfilename())
file_menu.add_separator()
file_menu.add_command(label="Exit", command=root.quit)
menu_bar.add_cascade(label="File", menu=file_menu)

# 创建帮助菜单
help_menu = tk.Menu(menu_bar, tearoff=0)
help_menu.add_command(label="About", command=lambda: messagebox.showinfo("About", "This is a Tkinter demo"))
menu_bar.add_cascade(label="Help", menu=help_menu)

# 将菜单栏添加到主窗口
root.config(menu=menu_bar)

# 运行主事件循环
root.mainloop()

Attention:

  • tearoff=0表示这个窗口不能被分离,也就是不能从菜单栏那里拿下来,假设不设置tearoff参数,那么默认参数为1,会在菜单栏和框体出现一条虚线表明可以拿下来 参见
    image
    image

  • 注意这一行
    file_menu.add_command(label="Open", command=lambda: filedialog.askopenfilename())
    中的匿名函数是为了延迟函数的执行,如果我们去掉这个匿名函数,那么后面调用的打开文件函数就会在创建窗口的时候执行,而非我们点击开始菜单的 open时启用

  • messagebox.showinfo()方法会产生一个弹窗,并且出现在最上层(不点掉没法干别的)
    image

  • 横向的项目 (例如file,help) 添加使用add_cascade() (级联) 方法,纵向 (例如open,save) 添加使用add_command()

相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示