当前位置:首页>python>python GUI之tkinter(三)

python GUI之tkinter(三)

  • 2026-09-02 19:39:57
python GUI之tkinter(三)

3.21

python GUI之tkinter(三)

?

学前疑问

想让你的Python小工具看起来像专业软件一样拥有便捷的菜单栏吗? 

通过TKinter,你可以轻松为窗口添加“文件”、“编辑”等下拉菜单,并为其绑定功能。

1

tkinter之Tk菜单添加

(1)创建主菜单、设置菜单名、开启菜单栏

# 创建主菜单# 设置菜单名# 开启菜单栏import tkinter as tka1 = tk.Tk()a1.title('我的游戏')a1.geometry('500x500+400+200')a1.resizable(True, True)a1.iconbitmap('logo1.ico')# 创建主菜单cai = tk.Menu(a1)# 设置菜单名cai.add_cascade(label='员工1')cai.add_cascade(label='员工2')# 开启菜单栏a1.config(menu=cai)a1.mainloop()

(2)创建下级菜单、设置下级菜单、绑定到主菜单

# 创建主菜单# 设置菜单名# 开启菜单栏import tkinter as tka1 = tk.Tk()a1.title('我的游戏')a1.geometry('500x500+400+200')a1.resizable(True, True)a1.iconbitmap('logo1.ico')# 创建主菜单cai = tk.Menu(a1)# 创建下级菜单xia = tk.Menu(cai, tearoff=0)# 设置下级菜单xia.add_command(label='添加', command='')# 绑定到主菜单# 设置菜单名cai.add_cascade(label='员工1', menu=xia)  # menu=xia下级菜单绑定到主菜单cai.add_cascade(label='员工2')# 开启菜单栏a1.config(menu=cai)a1.mainloop()

(3)创建下拉列表(组合框)、导包:from tkinter.ttk import Combobox

# 创建下拉列表(组合框)# 导包:from tkinter.ttk import Comboboximport tkinter as tkfrom tkinter.ttk import Comboboxa1 = tk.Tk()a1.title('我的游戏')a1.geometry('500x500+400+200')a1.resizable(True, True)a1.iconbitmap('logo1.ico')def t():    t1 = tk.Toplevel()    t1.title('我的游戏')    t1.geometry('300x300+500+300')    t1.resizable(True, True)    t1.iconbitmap('logo1.ico')    tk.Label(t1, text='城市:', font=('楷体', 16)).grid(row=1, column=1)    t2 = tk.StringVar()    t3 = ['北京', '上海', '深圳', '广州']    # 创建下拉列表(组合框)    t4 = Combobox(t1, state='readon    +ly', width=15, textvariable=t2, values=t3, font=('楷体', 16))    t4.grid(row=1, column=2)# 创建主菜单cai = tk.Menu(a1)# 创建下级菜单xia = tk.Menu(cai, tearoff=0)# 设置下级菜单xia.add_command(label='添加', command=t)# 绑定到主菜单# 设置菜单名cai.add_cascade(label='员工1', menu=xia)  # menu=xia下级菜单绑定到主菜单cai.add_cascade(label='员工2')# 开启菜单栏a1.config(menu=cai)a1.mainloop()

(4)创建单选框、顶层窗口焦点

# 创建单选框# 顶层窗口焦点import tkinter as tkfrom tkinter.ttk import Comboboxa1 = tk.Tk()a1.title('我的游戏')a1.geometry('500x500+400+200')a1.resizable(True, True)a1.iconbitmap('logo1.ico')def t():    t1 = tk.Toplevel()    t1.title('我的游戏')    t1.geometry('300x300+500+300')    t1.resizable(True, True)    t1.iconbitmap('logo1.ico')    # 设置顶层窗口焦点    t1.focus_set()    tk.Label(t1, text='城市:', font=('楷体', 16)).grid(row=1, column=1)    tk.Label(t1, text='性别:', font=('楷体', 16)).grid(row=1, column=1)    t2 = tk.StringVar()    s2 = tk.StringVar(value='男')    t3 = ['北京', '上海', '深圳', '广州']    # 创建下拉列表(组合框)    t4 = Combobox(t1, state='readonly', width=15, textvariable=t2, values=t3, font=('楷体', 12))    # 设置下拉列表组件默认显示列表内哪个下标索引    t4.current(0)    t4.grid(row=1, column=2)    # 创建单选框    tk.Radiobutton(t1, font=('楷体', 16), text='男', variable=s2, value='男').place(x=80, y=30)    tk.Radiobutton(t1, font=('楷体', 16), text='女', variable=s2, value='女').place(x=130, y=30)    def tj():        print(t2.get())        print(s2.get())    tk.Button(t1, text='提交', command=tj).place(x=200, y=200)# 创建主菜单cai = tk.Menu(a1)# 创建下级菜单xia = tk.Menu(cai, tearoff=0)# 设置下级菜单xia.add_command(label='添加', command=t)# 绑定到主菜单# 设置菜单名cai.add_cascade(label='员工1', menu=xia)  # menu=xia下级菜单绑定到主菜单cai.add_cascade(label='员工2')# 开启菜单栏a1.config(menu=cai)a1.mainloop()

(5)创建多选框 Checkbutton、创建整数变量 IntVar()

# 创建多选框 Checkbutton# 创建整数变量 IntVar()import tkinter as tkfrom tkinter.ttk import Comboboxa1 = tk.Tk()a1.title('我的游戏')a1.geometry('500x500+400+200')a1.resizable(True, True)a1.iconbitmap('logo1.ico')def t():    t1 = tk.Toplevel()    t1.title('我的游戏')    t1.geometry('300x300+500+300')    t1.resizable(True, True)    t1.iconbitmap('logo1.ico')    # 设置顶层窗口焦点    t1.focus_set()    tk.Label(t1, text='城市:', font=('楷体', 16)).grid(row=1, column=1)    tk.Label(t1, text='性别:', font=('楷体', 16)).grid(row=2, column=1)    tk.Label(t1, text='爱好:', font=('楷体', 16)).grid(row=3, column=1)    t2 = tk.StringVar()    s2 = tk.StringVar(value='男')    # 创建整数变量    s3 = tk.IntVar()    s4 = tk.IntVar()    t3 = ['北京', '上海', '深圳', '广州']    # 创建下拉列表(组合框)    t4 = Combobox(t1, state='readonly', width=15, textvariable=t2, values=t3, font=('楷体', 12))    # 设置下拉列表组件默认显示列表内哪个下标索引    t4.current(0)    t4.grid(row=1, column=2)    # 创建单选框    tk.Radiobutton(t1, font=('楷体', 16), text='男', variable=s2, value='男').place(x=80, y=30)    tk.Radiobutton(t1, font=('楷体', 16), text='女', variable=s2, value='女').place(x=130, y=30)    # 创建多选框    tk.Checkbutton(t1, font=('楷体', 12), text='跑步', variable=s3, onvalue=1, offvalue=0).place(x=80, y=57)    tk.Checkbutton(t1, font=('楷体', 12), text='跑步', variable=s4, onvalue=1, offvalue=0).place(x=150, y=57)    def tj():        print(t2.get())        print(s2.get())        if s3.get()  == 1:            print('跑步')        else:            print('未选择')        if s4.get()  == 1:            print('游泳')        else:            print('未选择')    tk.Button(t1, text='提交', command=tj).place(x=120, y=100)# 创建主菜单cai = tk.Menu(a1)# 创建下级菜单xia = tk.Menu(cai, tearoff=0)# 设置下级菜单xia.add_command(label='添加', command=t)# 绑定到主菜单# 设置菜单名cai.add_cascade(label='员工1', menu=xia)  # menu=xia下级菜单绑定到主菜单cai.add_cascade(label='员工2')# 开启菜单栏a1.config(menu=cai)a1.mainloop()

(6)创建列表框Listbox、导包:from tkinter import END

# 创建列表框Listbox# 导包:from tkinter import ENDimport tkinter as tkfrom tkinter.ttk import Comboboxfrom tkinter import ENDa1 = tk.Tk()a1.title('我的游戏')a1.geometry('500x500+400+200')a1.resizable(True, True)a1.iconbitmap('logo1.ico')tk.Label(a1, font=('楷体', 16), text='员工列表:', fg='red').place(x=1, y=1)lb = tk.Listbox(a1, font=('楷体', 16), width=44, height=20)lb.place(x=4, y=30)def t():    t1 = tk.Toplevel()    t1.title('我的游戏')    t1.geometry('300x300+500+300')    t1.resizable(True, True)    t1.iconbitmap('logo1.ico')    # 设置顶层窗口焦点    t1.focus_set()    tk.Label(t1, text='城市:', font=('楷体', 16)).grid(row=1, column=1)    tk.Label(t1, text='性别:', font=('楷体', 16)).grid(row=2, column=1)    tk.Label(t1, text='爱好:', font=('楷体', 16)).grid(row=3, column=1)    t2 = tk.StringVar()    s2 = tk.StringVar(value='男')    # 创建整数变量    s3 = tk.IntVar()    s4 = tk.IntVar()    t3 = ['北京', '上海', '深圳', '广州']    # 创建下拉列表(组合框)    t4 = Combobox(t1, state='readonly', width=15, textvariable=t2, values=t3, font=('楷体', 12))    # 设置下拉列表组件默认显示列表内哪个下标索引    t4.current(0)    t4.grid(row=1, column=2)    # 创建单选框    tk.Radiobutton(t1, font=('楷体', 16), text='男', variable=s2, value='男').place(x=80, y=30)    tk.Radiobutton(t1, font=('楷体', 16), text='女', variable=s2, value='女').place(x=130, y=30)    # 创建多选框    tk.Checkbutton(t1, font=('楷体', 12), text='跑步', variable=s3, onvalue=1, offvalue=0).place(x=80, y=57)    tk.Checkbutton(t1, font=('楷体', 12), text='跑步', variable=s4, onvalue=1, offvalue=0).place(x=150, y=57)    def tj():        print(t2.get())        print(s2.get())        if s3.get() == 1:            ah1 = '跑步'        else:            ah1 = '未选择'        if s4.get() == 1:            ah2 = '游泳'        else:            ah2 = '未选择'        nei = f'城市:{t2.get()}, 性别:{s2.get()}, 爱好1:{ah1}, 爱好2:{ah2}'        # 追加列表框内容        lb.insert(END, nei)    tk.Button(t1, text='提交', command=tj).place(x=120, y=100)# 创建主菜单cai = tk.Menu(a1)# 创建下级菜单xia = tk.Menu(cai, tearoff=0)# 设置下级菜单xia.add_command(label='添加', command=t)# 绑定到主菜单# 设置菜单名cai.add_cascade(label='员工1', menu=xia)  # menu=xia下级菜单绑定到主菜单cai.add_cascade(label='员工2')# 开启菜单栏a1.config(menu=cai)a1.mainloop()

最新文章

随机文章