1. 创建一个最基本的界面
1.1 弹窗
import PySimpleGUI as sg sg.Popup("一个简单的弹窗!") # 单行文本!
sg.Popup("第1行内容!","第2行内容!","第3行内容!") # 多行文本!
# text = ''' 文本内容! '''
# sg.Popup(text) # 多行文本!
效果如下:
1.2 基本框架---模板代码的组成
# 1)导入模块 import PySimpleGUI as sg # 2)定义布局,确定行数 layout = [ [sg.Text("请输入基本信息!")], [sg.Text("姓名"), sg.InputText()], [sg.Text("性别"), sg.InputText()], [sg.Text("电话号码"), sg.InputText()], [sg.Button("确认"), sg.Button("取消")], ] # 3)创建窗口 window = sg.Window("测试窗口", layout) # 4)事件循环 while True: event, values = window.read() # 窗口的读取,有两个返回值(1.事件;2.值) # print(event,values) if event == None: # 窗口关闭事件,设置一个出口跳出循环 break # 5)关闭窗口 window.close()
2. 主题
2.1 查看有效主题
import PySimpleGUI as sg sg.theme_previewer()
print(sg.theme_list()) # 获取有效主题名称
2.2 选择主题
import PySimpleGUI as sg sg.theme("主题名称") sg.theme("") # 随机主题
2.3 修改主题部分设置
import PySimpleGUI as sg sg.theme("LightGreen3") sg.theme_button_color("black","#6df85") # 修改LightGreen3的按钮颜色
3. 事件的介绍
3.1 窗口关闭事件
# 第1种: if event == None: # 窗口关闭事件 break # 第2种: if event == sg.WIN_CLOSED: # 窗口关闭事件 break
3.2 按钮点击事件
if event =="确认": # 点击确认按钮后,判断事件是否发生 print("确认") # 事件发生时要处理的任务 sg.Popup("执行确认任务!")
3.2.1 判断事件是否发生的几种方式
# 第1种 if event =="exit": sg.Popup("你点击了exit按钮!") break # 第2种 if event in("exit",None): # 事件为exit或None sg.Popup("你点击了exit或窗口关闭!") break # 第3种 if event.startswith("exit"): # 事件的前4个字母为exit sg.Popup("你点击了exit按钮!") break # 第4种 if event.endswith("exit"): # 事件的后4个字母为exit sg.Popup("你点击了exit按钮!") break
3.2.2 按钮事件-案例
# 1)导入模块 import PySimpleGUI as sg # 2)定义布局,确定行数 layout = [ [sg.Text("请输入基本信息!")], [sg.Text("姓名"),sg.InputText(enable_events=True,key="-XM-")], [sg.Text("性别"),sg.InputText(enable_events=True,key="-XB-")], [sg.Text("电话号码"),sg.InputText(enable_events=True,key="-DH-")], [sg.Button("确认"),sg.Button("取消")], ] # 3)创建窗口 window = sg.Window("测试窗口",layout) # 4)事件循环 while True: event,values = window.read() # print(event,values) if event == "确认": sg.Popup("你提交的信息如下!", "姓名:"+values["-XM-"], "性别:" + values["-XB-"], "电话号码:" + values["-DH-"],keep_on_top=True ) if event == None: break # 5)关闭窗口 window.close()
效果如下:
3.3 其他事件(文本元素、输入框、下拉菜单)
1)像文本元素、输入框、下拉菜单等事件默认属性是关闭的,当手动设置他们的事件属性(enable_event=True)为真时,他们也将具备事件属性。
2)未设置key值时,事件默认的event为第一个元素。
layout = [[sg.Text("OK",enable_events=True)]] # 打开时间属性,点击文本时会触发弹窗 ... if event == "OK": sg.Popup("文本元素事件为ok,即弹窗!")
3)设置key值时,事件的event为key值。
layout = [[sg.Text("OK",enable_events=True,key="-WB-")]] ... if event == "OK": sg.Popup("不会弹窗的哦!") if event == "-WB-": sg.Popup("弹窗!")
4. 值的介绍
窗口读取返回值,值的两种获取方式
- 通过列表索引获取返回值-值。
- 通过字典的键获取返回值-值。
# 第1种:通过列表的索引获取返回值。默认是通过列表获取。values[位置序号] if event =="确认": print(values[1]) # 打印第2行元素的值 # 第2种:通过字典的键获取返回值。 # 当给元素设定唯一标识符key,则该元素无法通过列表索引,只能通过字典key进行索引。values[key] layout = [ [sg.Text("请输入基本信息!")], [sg.Text("姓名"), sg.InputText(key="-XM-")]] # key建议首字母为大写,“ - ”不能少。 while True: event, values = window.read() if event == "确认": print(values["-XM-"]) # 打印姓名的值
5. 自定义窗口
5.1 for循环简介---它可以遍历任何序列的项目
str1 = "abcd1234" list1 =["乔治","佩琪","佩德罗"] # for i in str1: for i in list1: print(i) >>乔治 >>佩琪 >>佩德罗
5.2 配合使用for循环,自定义窗口
# 1)导入模块 import PySimpleGUI as sg # 2)定义布局,确定行数 str = "ABCD"
# 第1种: # 注意:有两个中括号的。
layout = [[sg.Text(i) for i in str]] # for循环前面是 () 时,从左向右遍历。
# 第2种 # layout = [[sg.Text(j)] for j in str] # for循环前面是 [] 时,从上向下遍历。 # 3)创建窗口 window = sg.Window("测试窗口",layout) # 4)事件循环 while True: event, values = window.read() # print(event,values) if event == None: break # 5)关闭窗口 window.close()
效果如下:
5.3 布局和元素的组合方式
5.3.1 第一种布局方式
layout = [ [sg.Text("请输入基本信息!")], [sg.Text("姓名"), sg.InputText(key="-XM-")], [sg.Text("性别"), sg.InputText()], [sg.Text("电话号码"), sg.InputText()], [sg.Button("确认"), sg.Button("取消")], ]
layout_a = [[sg.B("增加按钮")]] layout = layout + layout_a
5.3.2 第二种布局方式
元素间除了用“ ,” 隔开外,还可以用“ ] + [ ”替代。
layout = [ [sg.Text("请输入基本信息!")], [sg.Text("姓名")]+[sg.InputText(key="-XM-")], [sg.Text("性别")]+[ sg.InputText()], [sg.Text("电话号码")]+[sg.InputText()], [sg.Button("确认")]+[ sg.Button("取消")], ]