GUI界面设计
tkinter
基本流程
import tkinter as tk
# 根窗口的实例化
window = tk.Tk()
# 设置根窗口的标题
window.title('tkinter')
# 设置根窗口的大小
window.geometry('100x100')
# 结尾必写,窗口循环
window.mainloop()
基本部件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UIoQWdhB-1679623248725)(https://note.youdao.com/yws/public/resource/59a778834bc8d95ff20e7b55087b69ef/xmlnote/0CA5458FEA7F43C48E126A605039D8B7/16682)]
图形文本框
tk.Label
var = tk.StringVar()
tk.Label(window, bg='背景颜色', fg='字体颜色', font=字体大小, text='图形文本框显示内容'/textvariable=var).pack()
按钮
tk.Button
tk.Button(window,command=函数方法, width=宽, height=高).pack()
图形文本框 按钮 连用案例
import tkinter as tk
# 根窗口的实例化
window = tk.Tk()
# 设置根窗口的标题
window.title('tkinter')
# 设置根窗口的大小
window.geometry('600x500')
# 设置一个文本变量
var = tk.StringVar()
var.set('我是设置的初始值')
# 添加一个图形文本框提示
tk.Label(window, textvariable=var, font=12, fg='white', bg='green', width=15, height=2).pack()
# 设置一个函数用来更改var的值
def var_set():
var.set('我是更改后的值')
# 添加一个按钮
tk.Button(window, command=var_set, text='请点一下我', font=12, fg='white', bg='red', width=15, height=2).pack()
# 窗口循环
window.mainloop()
输入框
tk.Entry
tk.Entry(window, show=None/'*', font=12).pack()
内嵌文本框
tk.Text
tk.Text(window, height=12).pack()
列表选择框
tk.Listbox
tk.Listbox(window).pack()
# 第一种写入值的方法
var = tk.StringVar()
var.set((1, 2, 3, 4, 5))
tk.Listbox(window, listvariable=var).pack()
# 第二种写入值的方法
l1 = tk.Listbox(window)
l1.pack()
l1.insert(1, 'first')
# 获取当中选中的值
a = lbox1.get(lbox1.curselection())
# 删除值
l1.delete(1) # 删除第一位置的值
以上的连用
import tkinter as tk
# 根窗口的实例化
window = tk.Tk()
# 设置根窗口的标题
window.title('tkinter')
# 设置根窗口的大小
window.geometry('600x500')
# 添加一个输入框
e1 = tk.Entry(window, font=12, show=None)
e1.pack()
# 添加一个列表框
l1 = tk.Listbox(window, font=9)
l1.pack()
# 给列表框添加值
for i in range(20):
l1.insert('end', i)
# 添加一个函数
def print_text():
text.insert('end', f'{e1.get()}\n')
text.insert('end', f'{l1.get(l1.curselection())}\n')
text.insert('end', f'=====================================\n')
# 添加一个按钮 --- 在text中打印出上面的值
tk.Button(window, command=print_text, text='请点击我', font=12, bg='red').pack()
# 添加一个显示文本框
text = tk.Text(window, font=8, height=8)
text.pack()
# 窗口循环
window.mainloop()
选择部件
tk.Radiobutton — 用户只能选一个,不能多选。
tk.Radiobutton(window, text='选项值', variable=var, value='选项值', command=函数)
多选部件
tk.Checkbutton — 用户能多个选择
tk.Checkbutton(window, text='选项值', variable=var, onvalue=值 offvalue=值, command=函数)
以上连用
import tkinter as tk
# 根窗口的实例化
window = tk.Tk()
# 设置根窗口的标题
window.title('tkinter')
# 设置根窗口的大小
window.geometry('600x500')
# 设置一个变量
var = tk.StringVar()
var1 = tk.IntVar()
var2 = tk.IntVar()
# 设置图形提示框
l1 = tk.Label(window, text='选择一')
l1.pack()
l2 = tk.Label(window, text='选择二')
l2.pack()
# 基本函数
def hanshu():
l1.config(text='你选择的是' + var.get())
if (var1.get() == 1) & (var2.get() == 0):
l2.config(text='你必须学的是c')
elif (var1.get() == 0) & (var2.get() == 1):
l2.config(text='你必须学的是python')
elif (var1.get() == 0) & (var2.get() == 0):
l2.config(text='你必须学一个')
else:
l2.config(text='那就多练习')
# 选择部件
r1 = tk.Radiobutton(window, text='python', variable=var, value='Python', command=hanshu)
r1.pack()
r2 = tk.Radiobutton(window, text='c++', variable=var, value='C++', command=hanshu)
r2.pack()
# 多选部件
c1 = tk.Checkbutton(window, text='C', variable=var1, onvalue=1, offvalue=0, command=hanshu)
c1.pack()
c2 = tk.Checkbutton(window, text='Python', variable=var2, onvalue=1, offvalue=0, command=hanshu)
c2.pack()
# 窗口循环
window.mainloop()
下拉菜单的选项列表
# 创建一个下拉对象
menubar = tk.Menu(window)
# 创建一个file的菜单项(默认不下拉)
filemenu = tk.Menu(menubar, tearoff=0)
# 将创建的file装到menubar容器里面
menubar.add_cascade(label='file', menu=filemenu)
# 在file当中添加以下几个小按钮,每个按钮对应于一个操作
filemenu.add_command(label='New', command=操作)
filemenu.add_command(label='Open', command=操作)
# 添加一条分界线
filemenu.add_separator()
# 用tkinter里面自带的quit()函数
filemenu.add_command(label='Exit', command=window.quit)
# 添加一个二级菜单
submenu = tk.Menu(filemenu)
# 在file菜单里面的菜单
filemenu.add_cascade(label='Import', menu=submenu, underline=0)
# 在二级菜单里添加操作
submenu.add_command(label='little_1', command=操作)
# 创建菜单栏完成后,配置菜单栏的显示
window.config(menu=menubar)
页面区分
# 创建一个主Frame
frame= tk.Frame(window)
frame.pack()
# 子frame建立
frame_left = tk.Frame(frame)
frame_right = tk.Frame(frame)
# 其他frame长在主Frame上面
frame_1.pack(side='left')
frame_2.pack(side='right')
# 创建小组件显示在子frame上
tk.Label(frame_1, text='我在frame_1上', bg='green').pack()
tk.Label(frame_2, text='我在frame_2上', bg='green').pack()
提示信息窗口弹出
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-10Frb3e0-1679623248728)(https://note.youdao.com/yws/public/resource/59a778834bc8d95ff20e7b55087b69ef/xmlnote/A605B2DF9E1749BB88CC64399B25F4FA/16789)]
# 一般放在按钮的函数里面调用的
tk.messagebox.showinfo(title='', message='')