01简单的图形界面:
pip install PySimpleGUI
安全工具包
02简单的界面
layout[[],[],[]...]
页面布局,内部由多个元祖组成,每一个元祖都是一个界面
PySimpleGUI.Text("需要显示的文本")/PySimpleGUI.T("需要显示的文本")
进行文本输出
PySimpleGUI.InputText("文本框默认名称")/PySimpleGUI.In("文本框默认名称")
进行输入文本框输出
PySimpleGUI.Button("按钮名称")
进行按钮输出
layout = [ [PySimpleGUI.Text("这是第一行数据")], [PySimpleGUI.Text("姓名"), PySimpleGUI.InputText("程序员王总")], [PySimpleGUI.Text("性别"), PySimpleGUI.InputText("男")], [PySimpleGUI.Text("国籍"), PySimpleGUI.InputText("中国")], [PySimpleGUI.Button("确定"), PySimpleGUI.Button("取消")] ]
PySimpleGUI.Windows("程序名称",程序布局)
定义程序的布局,返回一个windows类
windows.read()
读取窗口,返回两个值,一个是事件,一个是值
import PySimpleGUI layout = [ [PySimpleGUI.Text("这是第一行数据")], [PySimpleGUI.Text("姓名"), PySimpleGUI.InputText("程序员王总")], [PySimpleGUI.Text("性别"), PySimpleGUI.InputText("男")], [PySimpleGUI.Text("国籍"), PySimpleGUI.InputText("中国")], [PySimpleGUI.Button("确定"), PySimpleGUI.Button("取消")] ] windows = PySimpleGUI.Window("我的程序", layout) while True: event, values = windows.read() if event is None: windows.close() break
03窗口关闭事件
即界面右上角的x
编写方法:
1)if event == None:(判断是否点击x)
需要执行的操作
2)if event == PySimpleGUI.WIN_CLOSED:
需要执行的操作
注意:
必须定义窗口关闭事件,否则会消耗100%的CPU
04按钮点击事件:
编写方法:
1)if event == "对应按钮名称":
"""对应名称按钮被触发时的操作"""
PySimpleGUI.Popup("弹窗提示,进行按钮操作后的提示文字")
2)if event in ("按钮名称1","按钮名称2"):
"""对应多个按钮名称触发时的操作,即多按钮操作一个事件"""
PySimpleGUI.Popup("弹窗提示,进行按钮操作后的提示文字")
3)if event.startswith("对应按钮名称"):
"""主要以括号内名称开头的按钮,都执行此事件"""
PySimpleGUI.Popup("弹窗提示,进行按钮操作后的提示文字")
4)if event.endswith("对应按钮名称"):
"""只要以括号内名称结尾的按钮,都执行此事件"""
PySimpleGUI.Popup("弹窗提示,进行按钮操作后的提示文字")
5)像文本元素,输入框,下拉菜单等事件属性默认是关闭的。如果需要,可以手动设置他们的事件属性,enable_event=True为真时,他们也将具有事件属性
以文本元素为例:
layout[...
PySimpleGUI.Text("OK",enable_events=True)
...]
此时该文本文件也会有触发事件
PySimpleGUI.Popup("文字"):其实就是一个小弹窗显示
5)获取输入窗口的值
windows.read()
现在通过该方法,可以读取到event,也能读取到values,那此values就是输入框内容所组成的列表,如果想要使用:
1)可以通过索引的方式进行引用
注意,这里能进到列表中的数据是没有经过key定义的,进过key的值不会存
在!
import PySimpleGUI layout = [ [PySimpleGUI.Text("这是第一行数据")], [PySimpleGUI.Text("姓名"), PySimpleGUI.InputText("程序员王总")], [PySimpleGUI.Text("性别"), PySimpleGUI.InputText("男")], [PySimpleGUI.Text("国籍"), PySimpleGUI.InputText("中国")], [PySimpleGUI.Button("确定"), PySimpleGUI.Button("取消")] ] windows = PySimpleGUI.Window("我的程序", layout) while True: event, values = windows.read() if event == PySimpleGUI.WIN_CLOSED: windows.close() break if event == "确定": print(values[0])
292 2)通过字典的形式获取输入框的值
在定义输入框时,需要额外指定key以方便后续读取、
PySimpleGUI.InputText("输入框的默认值",key="指定key值")
3)关于values和event以及事件触发enable_events
values记录了所有元素的值,如果对应元素有事件发生,那对应元素的key的值就会被记录,即如果元素的enable_events设置为真,那么当操作对应元素时,就会返回对应元素的值到values的列表中
06主题
主题theme包括:窗口的背景颜色,文本Text颜色,按钮的字体颜色和按钮颜色等等。
1)查看主题
PySimpleGUI.theme_previewer()
2)获取主题名称列表
PySimpleGUI.theme_list()
3)设置主题
PySimpleGUI.theme("主题名称")
4)设置随机主题
PySimpleGUI.theme("")
随机主题,会提示你当前使用的主题名
print(PySimpleGUI.theme_list()) PySimpleGUI.theme("Dark") PySimpleGUI.Popup("测试")
5)获取主题的部分设置
PySimpleGUI.theme_background_color() # 主题_背景_颜色 PySimpleGUI.theme_border_width() # 主题_边框_宽度 PySimpleGUI.theme_button_color() # 主题_按钮_颜色 PySimpleGUI.theme_element_background_color() # 主题_元素_背景_颜色 PySimpleGUI.theme_text_color() # 主题_元素_文本_颜色 PySimpleGUI.theme_input_background_color() # 主题_输入框_背景_颜色 PySimpleGUI.theme_input_text_color() # 主题_输入框_文本_颜色 PySimpleGUI.theme_progress_bar_border_width() # 主题_进度_栏_边框_颜色 PySimpleGUI.theme_progress_bar_color() # 主题_进度_栏_颜色 PySimpleGUI.theme_slider_border_width() # 主题_滑块_边框_颜色 PySimpleGUI.theme_slider_color() # 主题_滑块_颜色 PySimpleGUI.theme_text_color() # 主题_文本_颜色 PySimpleGUI.theme_text_element_background_color() # 主题_文本_元素_背景_颜色
6)修改主题的部分设置
可以先print对应主题,查看输入规范,然后根据规范进行赋值,例如
PySimpleGUI.theme("Dark") PySimpleGUI.Popup("测试") print(PySimpleGUI.theme_button_color()) PySimpleGUI.theme_button_color(("black", "#004F00")) PySimpleGUI.Popup("测试之后的", "可以多一点")
07批量创建
利用for循环进行多种元素创建
1)layout[
[PySimpleGUI.In() for i in "ABCD"]
]
以列表的形式就是在同一行
2)layout[
[[PySimpleGUI.In()] for i in ["12","34","56"]]
]
以key的形式就是分行创建
08自定义布局
上面布局时,用,进行多个元素的拼接,实际也可以使用+进行拼接但是需要加上[]
import PySimpleGUI layout = [ # [PySimpleGUI.Text("这是第一行数据")], # [PySimpleGUI.Text("姓名"), PySimpleGUI.InputText("程序员王总")], # [PySimpleGUI.Text("性别"), PySimpleGUI.InputText("男")], # [PySimpleGUI.Text("国籍"), PySimpleGUI.InputText("中国")], # [PySimpleGUI.Button("确定"), PySimpleGUI.Button("取消")] [PySimpleGUI.Text("这是第一行数据")], [PySimpleGUI.Text("姓名")]+[PySimpleGUI.InputText("程序员王总")]]+[ [PySimpleGUI.Text("性别")]+[PySimpleGUI.InputText("男")]]+[ [PySimpleGUI.Text("国籍"), PySimpleGUI.InputText("中国")], [PySimpleGUI.Button("确定"), PySimpleGUI.Button("取消")] ] windows = PySimpleGUI.Window("我的程序", layout) while True: event, values = windows.read() if event == PySimpleGUI.WIN_CLOSED: windows.close() break if event == "确定": print(values[0])
09文本元素的参数
对应参数如下
[PySimpleGUI.T(text, key="-Text-", # 元素唯一标识符,用于元素的定位 size=(None, None), # 元素宽度,行高(int, int) font=("宋体", 20), # 设定文字字体,大小,font="宋体",font=("宋体", int) or font["宋体", int] auto_size_text=True, # 当设定值为True时,窗口自动适应文本大小 enable_events=False, # bool: 事件属性,设定为True时,点击文本发生事件 relief="solid", # 浮雕设计"raised", "sunken", "flat", "ridge", "solid", "groove" border_width=20, # 当设定relief时,用来设定对应效果的边界宽度 text_color=None, # 文本颜色 background_color=None, # 文本背景颜色 justification=None, # 对齐方式: "left", "right", "center" pad=None, # 元素间隔设定 记住左右上下((int, int), (int, int))当左右或上下值一样时(int, int) right_click_menu=None, # 右击可以调出菜单 list[list[Union[List[str],str]]] grab=None, # 如果为真,点击此元素可以移动拖拽窗口 tooltip=None, # str: 悬浮文本,当光标置于该元素上方,会显示设定的文本 visible=True)] # bool: 元素可见状态 ]
10文本元素的更新
1) window[key].update()
2) window[key].Update()
文本元素可以更新的属性:
windows[key].update( value=None, # str更新文本(只更新文本可以智驾用字符串) background_color=None, # 更新文本背景颜色 text_color=None, # 更新文本颜色 font=None, # 更新字体的名称或者大小 visible=None # 更新元素的可见状态 )
import PySimpleGUI as pg layout = [ [pg.B("中文", key="中文"), pg.B("English", key="English")], [pg.T("请输入基本信息!", key="A")], [pg.T("姓名", key="B", size=(4, 1)), pg.In()], [pg.T("性别", key="C", size=(4, 1)), pg.In()], [pg.T("国籍", key="D", size=(4, 1)), pg.In()], [pg.B("确认", key="E", size=(8, 1)), pg.B("取消", key="F", size=(8, 1))] ] window = pg.Window("我的程序", layout) while True: event, values = window.read() if event == pg.WIN_CLOSED: window.close() break if event == "English": window["A"].update("Please enter information") window["B"].update("Name") window["C"].update("Sex") window["D"].update("Nationality") window["E"].update("Confirm") window["F"].update("Cancel") if event == "中文": window["A"].update("请输入基本信息!") window["B"].update("姓名") window["C"].update("性别") window["D"].update("国籍") window["E"].update("确认") window["F"].update("取消")
11输入框元素的参数
对应参数如下
[PySimpleGUI.In(text, key="-Text-", # 元素唯一标识符,用于元素的定位 size=(None, None), # 元素宽度,行高(int, int) text_color=None, # 输入框里的文本颜色 background_color=None, # 输入框的颜色 justification=None, # 对齐方式: "left", "right", "center" disabled=None, # 元素禁用,如果为True则禁用,无法输入任何值 disable_readonly_background_color=None, # 元素禁用时的背景颜色设定 disable_readonly_text_color=None, # 元素禁用时的文本颜色设定 password_char="" # 密码字符,一般设置为* font=("宋体", 20), # 设定文字字体,大小,font="宋体",font=("宋体", int) or font["宋体", int] border_width=20, # 输入框边界线宽度设定 enable_events=False, # bool: 输入框的事件属性,设定为True时,输入值会发生事件 do_not_clear=True, # bool: 输入框内容不被清除,如果为False,一旦发生事件,该输入框内的值会被清楚 focus=False, # 设定焦点,如果为True,则光标显示在此输入框 pad=None, # 元素间隔设定 记住左右上下((int, int), (int, int))当左右或上下值一样时(int, int) right_click_menu=None, # 右击可以调出菜单 list[list[Union[List[str],str]]] grab=None, # 如果为真,点击此元素可以移动拖拽窗口 tooltip=None, # str: 悬浮文本,当光标置于该元素上方,会显示设定的文本 visible=True)] # bool: 元素可见状态 ]
12单行输入框的更新方法
1)update的方法更新元素
window[key].update()
window[key].Update()
import PySimpleGUI as pg layout = [ [pg.B("中文", key="中文"), pg.B("English", key="English")], [pg.T("请输入基本信息!", key="A")], [pg.T("姓名", key="B", size=(4, 1)), pg.In("", key="xin")], [pg.T("性别", key="C", size=(4, 1)), pg.In()], [pg.T("国籍", key="D", size=(4, 1)), pg.In()], [pg.B("确认", key="E", size=(8, 1)), pg.B("取消", key="F", size=(8, 1))] ] window = pg.Window("我的程序", layout) while True: event, values = window.read() if event == pg.WIN_CLOSED: window.close() break if event == "E": window["xin"].Update( value="123", disabled=None, select=None, visible=None, text_color="red", background_color=None, move_cursor_to="end" # 光标移动到文本的最后 )
2)setFocus的方法,设置元素焦点
window[key].setFocus()
window[key].set_focus()
import PySimpleGUI as pg layout = [ [pg.B("中文", key="中文"), pg.B("English", key="English")], [pg.T("请输入基本信息!", key="A")], [pg.T("姓名", key="B", size=(4, 1)), pg.In("", key="xin")], [pg.T("性别", key="C", size=(4, 1)), pg.In()], [pg.T("国籍", key="D", size=(4, 1)), pg.In()], [pg.B("确认", key="E", size=(8, 1)), pg.B("取消", key="F", size=(8, 1))] ] window = pg.Window("我的程序", layout) while True: event, values = window.read() if event == pg.WIN_CLOSED: window.close() break if event == "E": window["xin"].SetTooltip("哈哈哈")
3)SetTooltip的方法,更新元素悬浮提示
window[ky].SetTooltip()
window[key].set_ftooltip()
13按键元素的设定及更新方法
1)按键元素的参数
pg.Button(button_text="", Key=None, tooltip=None, # 悬浮文本 disabled=False, # 元素禁用设定 image_filename=None, # 图片路径,按钮图片表示,和image_data二选一使用 image_data=None, # 图片base64格式,按钮用图片显示,和image_filename二选一使用 image_size=(None, None), image_subsample=None, # 图片大小设定,为2时,原图片的二分之一大小:2=1/2, 3=1/3, 4=1/4, etc border_width=None, # 按钮边界线设定 size=(None, None), auto_size=None, # 按键上文本大小自动调节 button_color=("", ""), # 按键的颜色,前面是字体,后面是背景 disabled_button_color=None, # 按键禁用时显示的按钮颜色 font=None, bind_return_key=False, # 绑定回车键,如果设定为True,回车键会使此元素被点击 focus=False, pad=None) ]
2)update的方法更新元素
window[key].update()
window[key].Update()
可更新内容与其自有参数一致
3)获得base64格式文件的方法
import base64 f = open(r"文件路径", "rb") res = f.read() s = base64.b64encode(res) f.close()
14列表元素的设定方法
1)使用方式:
PySimpleGUI.Listbox(list) / PySimpleGUI.LB(list)
2)列表元素的参数
[pg.Listbox(list_A, size=(80, 40), default_values=None, # 打开时默认选中的值或者列表 key=None, select_mode=None, # 鼠标选择模式,有效值有4中: # single, 单选,更换时点击选择 # multiple, 可以多选,逐一点击选择 # browse, 单选,鼠标按住也可以更换选择 # extended, 可以多选,鼠标按住也可以扩展选择 enable_events=False, # 列表元素的事件属性,如果为True,点击时会返回key bind_return_key=True, # 绑定回车键,如果为True回车键按下时,相当于此元素被点击 disabled=False, auto_size_text=True, font=None, no_scrollbar=False, # 如果为True,则没有滚动条 background_color="", text_color="", pad=None, tooltip=None, # 悬浮文本 right_click_menu=None, # 右击调出菜单 visible=True )]
15列表元素的更新方法
1)更新方法:
window[key].update()
window[key].Update()
2)可更新的参数:
wd["None"].update( values=None, # 元祖或者列表[1,2,]或(1,2,) disabled=None, # 更新元素后是否被禁用 set_to_index=None, # 高亮显示设定的索引对应的列表值 scroll_to_index=None, # 将设定的索引跳到要显示的第一行 select_mode=None, visible=None )
16下拉菜单的书写方法
1)书写方式:
PySimpleGUI.Comno() / PySimpleGUI.InputComno() /
PySimpleGUI.DropDown() / PySimpleGUI.Drop()
此方法与上述列表元素的最大区别在于,该方法可以输入(但是不能多选),而Listbox取得的值是存放在列表里面,但是Combo取得的值是对象本身
2)参数
[pg.Drop(list_A, size=(1, 2), auto_size_text=True, background_color="", text_color="", enable_events=False, disabled=False, pad=None, tooltip=None, readonly=False, # 元素只读属性,只能选择不能输入内容 font=None, visible=True )] ]
17下拉菜单的更新
1)更新方法:
window[key].update()
window[key].Update()
2)可更新的参数:
wd[A].update(value=None, # 更新默认选中的选项 values=None, # 更新显示的所有下拉菜单文本 set_to_index=None, # 高亮显示设定的索引的文本 disabled=None, # 更新元素的禁用状态 readonly=None, # 更新元素的只读状态 font=None, visible=None )
18选择菜单和旋转按键
1)选择菜单书写方法:
PySimpleGUI.OptionMenu()
此元素和设置了只读属性的ComboBox很像,只是没有font、enable_events事件属性
2)选择菜单的参数
[pg.OptionMenu(list_A, default_value=None, # 默认文本 key=None, # 唯一标识符 size=(None, None), # 元素的宽度和行高 disabled=False, auto_size_text=False, background_color="", text_color="", pad=None, tooltip=None, visible=True )] ]
3)可更新属性
wd["None"].update(value=None, values=None, disabled=None, visible=None)
4)旋转按钮书写方法:
PySimpleGUI.Spin()
5)旋转按钮的参数:
可更新属性见上
[pg.Spin(initial_value=None, # 默认显示选项 key=None, disabled=False, size=(None, None), auto_size_text=None, font=None, background_color="", text_color="", pad=None, tooltip=None, visible=True )]
19单选框元素
1)单选框元素的书写方法:
PySimpleGUI.Radio("", group_id) / PySimpleGUI.R("", group_id)
group_id的意思就是,单选框元素只能有一个选择,选择这个,另一个就非选择状态
2)更新方法:
---window[key].update()
--window[key].ResetGroup() / window[key].reset_group()
下面这个是在执行完单选操作后,重置选择为空
import PySimpleGUI as pg dict_A = {"D": 1, "B": 2, "C": 3} list_A = [] for i in dict_A: list_A.append(i) layout = [ [pg.Radio(i, group_id=1, key=i)for i in list_A], [pg.R("a", group_id=1)], [pg.B("确定", key="AAA")] ] wd = PySimpleGUI.Window("GOOD", layout, grab_anywhere=True) while True: event, values = wd.read() if event is None: wd.close() break if event == "AAA": wd["D"].ResetGroup()
同一个group_id的单选框,可以使用任意一个key对整个group进行重置操作
3)单选框属性,与其他基本一致,就多了一个group_id
4)单选框可更新的属性
wd["D"].update(value=None, # 为True是,此单选框被选中,同组其他更新为未选中、 text=None, # str 更新显示在按钮旁边的文本 background_color="", text_color="", disabled=None, visible=None )
5)获取选择的内容
import PySimpleGUI as pg dict_A = {"D": 1, "B": 2, "C": 3} list_A = [] for i in dict_A: list_A.append(i) layout = [ [pg.Radio(i, group_id=1, key=i)for i in list_A], [pg.R("a", group_id=1, enable_events=True)], [pg.B("确定", key="AAA")] ] wd = PySimpleGUI.Window("GOOD", layout, grab_anywhere=True) while True: event, values = wd.read() if event is None: wd.close() break if event == "AAA": for key, value in values.items(): if value is True: print(key)
20复选框元素
1)复选框元素的书写方式:
PySimpleGUI.Checkbox() / PySimpleGUI.CB()
就是一个选择里有多个信息
2)复选框的更新方法:
window[key].update()
3)复选框的属性:
[pg.Checkbox(text="AA", # 选框旁边的数字 key="AA", default=False, # 是否默认选中 size=(None, None), auto_size_text=True, font=None, # (str,int)字体类型和大小 background_color="", text_color="", enable_events=False, pad=(None, None), tooltip="", visible=True)] ]
4)复选框可更新属性
wd["AA"].update(value=None, # 更新选中状态,如果为True则选中,为False则清空 text=None, background_color="", text_color="", disabled=None, visible=None )
21滑块元素
1)滑块元素的书写方法
PySimpleGUI.Slider()
2)滑块元素的属性
[pg.Slider(range=(None, None), # 滑块的范围(最小值,最大值) key=None, # 元素的唯一标识符 default_value=None, # 滑块初始所处的位置 tick_interval=None, # 刻度值标记 resolution=None, # 滑块移动的最小单位 orientation=None, # 方向设定,水平("h"/"horizontal")或者垂直("v"/"vertical") disable_number_display=False, # 默认为false,如果为True,滑块旁的数字不显示 border_width=None, # 边界线宽度 relief=None # 浮雕设计,"raised"/"sunken"/"flat"/"ridge"/"solid/"groove" )]
3)滑块元素的更新方法:
window[key].update()
window[key].Update()
4)滑块元素可更新的属性:
wd["None"].update(value=None, range=(None, None), disabled=None, visible=None )
22图片元素
1)图片元素的书写方法:
PySimpleGUI.Image(filename="图片路径")
图片路径仅支持GIF和PNG
2)图片元素的属性
filename=None, # 图片路径仅支持GIF和PNG data=None, # base64编码格式的字符串图片 background_color=None, # 背景颜色设定 size=(None, None), # 图片的宽度和高度 Pad=None, tooltip=None, right_click_menu=None, visible=True enable_events=False
3)图片元素的更新方法:
window[key].update()
window[key].Update()
4)图片元素可更新属性
filename=None, data=None, size=(None, None), visible=None
5)图片元素的动图更新方法
window[key].update_animation(source,time_between_frames)
window[key].UpdateAnimation(source,time_between_frames)
其中,source就是包含动画的gif文件,或者base64编码的字符串,time_between_frames表示显示帧之间要等待的毫秒数
23列元素
1) 列元素的书写方法:
PySimpleGUI.Column() / PySimpleGUI.Col()
列元素是一个容器元素,用于在窗口的布局中创建布局
layoutL = [ [pg.T("左边")], [pg.InputText()] ] layoutR = [ [pg.B("确认", size=(80,40))] ] layout = [[pg.Col(layoutL), pg.Col(layoutR)]] wd = PySimpleGUI.Window("GOOD", layout, grab_anywhere=True) while True: event, values = wd.read() if event is None: wd.close() break
2)列元素的参数
layout = [[pg.Col(layoutL, background_color="", size=None, pad=None, scrollable=True, # 如果True,则滚动条将添加到该列 vertical_scroll_only=True, # 如果为True,则不会显示水平滚动条 right_click_menu=None, key=None, visible=True, justification="left", # 为列本身对齐方式 element_justification="Center", # 列内所有元素的对齐方式,"left","center","right" vertical_alignment=None, # 垂直对齐方式,"top","bottom","center" grab=True, expand_x=None, # 如果为True.则列将自动沿x方向扩展以填充可用空间 expand_y=True, # 如果为True,则列将自动沿y方向扩展以填充可用空间 ), pg.Col(layoutR)]]
24框架元素
1)框架元素的书写方式
PySimpleGUI.Frame(title="",layout=layouya)
2)框架元素的参数
layout = [[pg.Frame(title="", layout=None, # 框架元素内的布局 background_color="", title_color="", title_location=None, # 标题所处位置:12个有效值 n(北)、nw(北西)、ne(北东)、 # e(东)、en(东北)、es(东南) # s(南)、se(南东)、sw(南西) # w(西)、ws(西南)、wn(西北) relief="", # 浮雕设计,"raised"、"sunken"、"flat"、"groove"、"ridge"、"solid" size=(None, None), font=None, pad=None, border_width=10, tooltip="", right_click_menu=None, visible=True, element_justification="", # 框架内元素的对齐方式"left"/"right"/"center" vertical_alignment=None, # 垂直对齐方式top/bottom/center
3)框架元素的更新方法
window[key].Update()
4)框架元素的更新属性:
value=None
visible=None
import PySimpleGUI import PySimpleGUI as pg layoutL = [ [pg.T("账号"), pg.InputText()], [pg.T("密码"), pg.InputText()], [pg.B("确认", key="A")] ] layoutR = [ [pg.B("确认", size=(80,40))] ] layout = [[pg.Frame("登录框", layoutL, key="B"), pg.Frame("恭喜哦", layoutR, key="C", visible=False)]] wd = PySimpleGUI.Window("GOOD", layout, grab_anywhere=True) while True: event, values = wd.read() if event is None: wd.close() break if event == "A": wd["B"].update(visible=False) wd["C"].update(visible=True)
25标签元素
1)标签元素的书写方法
PySimpleGUI.TabGroup([[sg.Tab("标题",布局),sg.Tab("标题",布局)]])
标签元素也是一种容器元素,里面可以放置各种元素及布局
2)标签元素的属性
layout = [ [pg.TabGroup([[pg.Tab("智驾设置", layoutL, background_color="", font="", pad=None, disabled=False, border_width=None, key="", tooltip=None, right_click_menu=None, visible=True, element_justification="", # 容器内元素的对齐方式left/right/center ), pg.Tab("CRC", layoutR)]])] ]
3)标签组的元素属性
layout = [ [pg.TabGroup([[pg.Tab("智驾设置", layoutL), pg.Tab("CRC", layoutR)]], tab_location=None, # 标签标题所处的位置,有效值12个,left/right/top/bottom/lefttop/leftbottom # righttop/bottomleft,bottomright,topleft/topright title_color="", # 标题文本颜色(未选中时) tab_background_color="", # 所有标签背景颜色(未选中) selected_title_color="", # 标题文本颜色(中时) selected_background_color="", # 所有标签背景颜色(未选中) background_color="", # 标签标题所在空白区域的背景颜色 font=None, enable_events=False, pad=None, border_width=None, key="", tooltip="", visible=True )] ]
4)标签组的可更新属性
title=None / disabled=None / visible=None
26文件选择器
1)文件选择器书写方式
PySimpleGUI.FileBrowse()单文件
PySimpleGUI.FilesBrowse()多文件
layout = [ [pg.FileBrowse(), pg.In()] ] wd = PySimpleGUI.Window("GOOD", layout, grab_anywhere=True) while True: event, values = wd.read() if event is None: wd.close() break
2)文件选择器属性
layout = [ [pg.FileBrowse(button_text="", # 按键显示文本 key="", # 记录路径的当行输入框的key,注意此key必须有对应的输入框 file_types=(("ALL Files", "*.*")), # 寻找文件时,只显示对应文件或者对应类型的文件 initial_folder=r"", # 默认路径设定 ), pg.In()]
27 文件夹选择器和文件另存为
1)文件夹选择器
PySimpleGUI.FolderBrowse()
layout = [ [pg.FolderBrowse(button_text="", target="key", # 指定存放目录地址的元素key initial_folder=None, # 设定默认路径 ), pg.In()] ]
2)文件另存为
PySimpleGUI.FileSaveAs()
layout = [ [pg.FolderBrowse(button_text="", target="key", # 指定存放目录地址的元素key initial_folder=None, # 设定默认路径 ), pg.In()], [pg.FileSaveAs(button_text="", target="key", file_types=("ALL Files", "*.*"),)] ]
28颜色选择器、日历选择器
1)颜色选择器书写方式:
PySImpleGUI.ColorChooserButton("button_text="")
属性:
button_text=None
target=key
2)日历选择器书写方式:
PySimpleGUI.CalendarButton(button_text="")
[pg.CalendarButton(button_text="日历选择器", close_when_date_chosen=True, # 选择日期后关闭日历界面 default_date_m_d_y=(月份, 日期, 年份), # 设置默认打开日期后显示的日期 locale="", # 区域设定 format="%Y-%m-%d %H:%M:%S", # 设定显示的格式,可以给更换位置 begin_at_sunday_plus=0, # 设定日历显示第一天的星期Day month_names=None, # 指定月份的列表 day_abbreviations=None, # 指定星期的列表 title="", # 选择窗口的标题 no_titlebar=False, # 不显示日期窗口的标题 location=(None, None) # 日历窗口的位置 )]]
29关于弹窗的各种设定
1)弹窗的书写方式:
PySimpleGUI.popup()
2)弹窗的属性
[pg.popup(title="", # 弹窗标题 button_color=None, # (文本颜色,背景颜色) background_color="", # 弹窗的背景颜色 text_color="", # 弹窗上面的文本颜色 auto_close=False, # 弹窗是否自动关闭 auto_close_duration=None, # 弹窗自动关闭前需要显示的事件(以s为单位) custom_text=(None, None), # 自定义窗口按钮上的文本,可以设定一个、两个 non_blocking=False, # 非租塞设定,如果为true,则弹窗不会影响程序下一步,否则需要等待用户输入 font=None, no_titlebar=True, # 不显示标题栏 grab_anywhere=True, keep_on_top=False, # 保持界面在屏幕的最前方 location=(None, None), # 设置弹窗的位置 any_key_closes=False, # 任意键关闭弹窗 image=None, # 显示图片(支出base64) modal=True, # 模态窗口设定,除非关闭此窗口,否则不能操作其他界面 )] ]
3)弹窗的返回值
弹窗的返回值是根据所点击的按键来返回的,即按钮的名字,或者按键关闭激活后的按键名字
30弹窗之弹窗输入框
1)书写方式:
PySimpleGUI.PopupGetText()
2)弹窗输入框的返回值
PySimpleGUI.PopupGetText()返回的就是输入的值
3)exit()直接退出主程序
31其他弹窗
1)文件夹选择弹窗:
PySimpleGUI.PopupGetFile() / PySimpleGUI.popup_get_file()
2)没有标题的弹窗,可以随意移动窗口:
PySimpleGUI.PopupGetFolder() / PySimpleGUI.popup_get_folder()
3)显示一段时间后自动关闭窗口:
PySimpleGUI.PopupAnnoying()
4)含有一个cannelled的按钮
PySimpleGUI.PopupCancel()
5)弹窗含有ok和cancel两个按钮
PySimpleGUI.PopupOKCancel()
6)含有一个颜色的Error按钮
PySimpleGUI.PopupError()
7)显示无按钮的弹窗
PySimpleGUI.PopupNoButtons()
8)闪现的弹窗
PySimpleGUI.PopupNoWait()
32菜单栏的设定
1)菜单栏的书写方式:
通过menu写菜单,在layout中加菜单即可
meun = [ ["文件(&F)", ["保存", "!不可选", "---", "退出"]] ]
2)菜单栏的重点补充
meun = [ ["文件(&F)", ["保存::保存", "!不可选", "---", "退出"]] ]
在对应选项旁边加::就可以指定key
[pg.Menu(meun, key="A", tearoff=True)],
tearoff设置菜单栏是否可以独立出来
33 window属性
wd = PySimpleGUI.Window("GOOD", layout, grab_anywhere=True, location=(None, None), size=(None, None), element_padding=((x,y),(m,n)), # 界面内所有元素的间隔 button_color=("",""), # 按键元素颜色统一设定,文本颜色,背景颜色 font="", background_color="", auto_close=False, # 界面自动关闭3s auto_close_duration=x, # 默认界面自动关闭为3s no_titlebar=False, # 是否需要窗口标题栏 keep_on_top=False, # 界面保持最前方 resizable=True, # 界面生成后,可以调整大小 disable_close=False, # 如果为True,窗口关闭按钮将不起作用 disable_minimize=False, # 如果为True,将不能最小化窗口 right_click_menu=None, transparent_color=None, # 界面透明度设定 element_justification="left", # 元素对齐方式,"left"/"right"/"center" )
34多行文本框
1)多行文本框书写方式:
PySimpleGUI.ML()
2)多行文本框属性
[pg.ML(default_text="", # 默认文本 disabled=True, # 禁用状态 border_width=None, # 边界线宽度设定 size=(x,y), # 宽度和行高设定 background_color=None, text_color=None, enable_events=True, # 设定后,点击元素会返回key key="", write_only=False, # 只写 reroute_stdout=False, # True时,print语句内容会显示在此文本框内 reroute_cprint=True, # 使用cprint将内容打印到此文本框内 reroute_stderr=False, # 步骤异常时,将文本写在此元素内,sys.stderr.write("") autoscroll=True, # 更多数据添加到末尾时,元素的内容将自动滚动 focus=False, font=None, pad=None, tooltip="", justification=None, # 对齐方式设定 right_click_menu=None, visible=True, do_not_clear=True, # 窗口读取一次,内容就会自动清除 )],
3)多行文本框可更新属性:
wd["AAA"].update(value="", disabled=None, append=False, # 如果为True,要更新内容会接在原本文本下方,原来的不会消失 font=None, text_color=None, background_color=None, text_color_for_value=None, visible=None, autoscroll=None, justification=None, )
4)关于cprint方法:
PySimpleGUI.cprint() 、 PySimpleGUI.print()
[pg.cprint("", end=None, # 结束符,默认为回车键 sep=None, # 分隔符,默认为空格键 text_color=None, background_color=None, colors=None, key=None, justification="对齐方式" )]
5)元素之间的垂直分隔线
PySimpleGUI.VerticalSeparator(color=None,key=None,pad)
35表格元素
1)表格元素的书写方式:
PySimpleGUI.Table()
2)表格元素的属性
[sg.Table(headings=a, # 表格头部 max_col_width=None, # 所有列的最大宽度 auto_size_columns=False, # 是否自动适应列宽度 def_col_width=None, # 定义列表宽度 display_row_numbers=False, # 是否显示序列号 justification="l", # 对其方式 num_rows=10, # 定义行数 row_height=30, # 定义行高 key="", font=("黑体", 10), text_color=None, background_color="red", enable_events=True, bind_return_key=True )]