0. a 控件元素属性设置说明集:
b 部分可更新属性:
1. 弹窗:sg.Popup('执行一个弹窗任务')
. 判断按钮点击有效的几种方法:
if event == 'aaa'
if event in ('aaa','bbb') 相当于 or
if event.startswith('aaa') 所有开头有aaa的按钮都有效
if event.endswith ('aaa') 所有结尾有aaa的按钮都有效
4,元素表示方法
layout = [ [sg.Text('abcd')], #单独一个元素
[sg.Text(i) for i in ['abcde',22]], #横向多个同类元素[[sg.In(ii)] for ii in ['1',2,3]] #竖向多个同类元素
]
另:[ A元素,B元素,C,,,] 一行多个不同元素,但上述中列表表示法的不可能这样。
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
即界面右上角的x
编写方法:
1)if event == None:(判断是否点击x)
需要执行的操作
2)if event == PySimpleGUI.WIN_CLOSED:
需要执行的操作
注意:
必须定义窗口关闭事件,否则会消耗100%的CPU
编写方法:
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
)]
————————————————
版权声明:本文为CSDN博主「W295723987」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/W295723987/article/details/126611877