简介
学习此教程必须先学习python入门教程( Python入门教程_恰到好处a的博客-CSDN博客)
PySimpleGUI这个模块需要安装,在cmd输入pip install PySimpleGUI,在python中验证安装:输入import PySimpleGUI,看一看是否正常引入,之后给他取个别名:sg
import PySimpleGUI as sg
#引入模块
import PySimpleGUI as sg
#创建元素
layout=[]#创建窗口
window=sg.Window('python图形化开发教程',layout)
#重复检测事件+重复刷新窗口
while True:event,values=window.read() # print(event,values)#按x退出循环if event==None: break#关闭窗口
window.close()
上面是常用的一个代码,经常用到,建议复制。
文本元素介绍
创建文本元素的属性
文本框写为Text,简写T,有如下几种属性:
text="",
key=None,
size=(None, None),
font=None,
auto_size_text=None,
enable_events=False,
relief=None,
border_width=None,
text_color=None,
background_color=None,
justification=None,
pad=None,
right_click_menu=None,
grab=False,
tooltip=None,
visible=True
text是文本框中显示的文本,key是元素的唯一标识符,size:宽度,行高,用()框起来font设定字体和字号,使用列表框起来,auto_size_text是元素调节大小是否自动,只有True或者False,enable_events是元素的事件属性,True单击元素会发生事件,relief是浮雕设计,只有'raised','sunken','flat','ridge','solid','groove'几个有效值,text_color是文本字体颜色,background_color是文本的背景颜色,justification是对齐方式,只有'left','right','center'几种有效值,pad是元素之间的间隔设定,right_click_menu是右键调出菜单,使List[List[Union[List[str],str]]]形式,grab是一个布尔值,如果为True就可以使用此元素移动窗口,tooltip是提示悬浮文本,visible如果设置成False,这个元素就看不见了。
文本元素的更新属性
元素更新有两种方法,分别是
window[key].update()
window[key].Update()
文本元素可以这么更新:
value=None,
# str 更新文本
background_color=None,
# str 更新文本背景颜色
text_color=None,
# str 更新文本颜色
font=None,
# 更新字体的名称或者大小
visible=None
# 更新元素的可见状态
我们来创建一个文本元素吧!
#引入模块
import PySimpleGUI as sg
#创建元素
#在layout中输入sg.T("第一个文本元素")之后就可以为他搞属性了!
layout=[
sg.T("第一个文本元素")]#创建窗口
window=sg.Window('python图形化开发教程',layout)
#重复检测事件+重复刷新窗口
while True:event,values=window.read() # print(event,values)#按x退出循环if event==None: break#关闭窗口
window.close()
下一章,我们来学习单行输入框。
单行输入框
创建单行输入框
单行输入框写成sg.InputText(),简写sg.In(),单行输入框的属性有如下一些:
default_text='',
key=None,
size=(None, None),
disabled=False,
password_char="",
justification=None,
background_color=None,
text_color=None,
font=None,
tooltip=None,
border_width=None,
enable_events=False,
do_not_clear=True,
focus=False,
pad=None,
disabled_readonly_background_color=None,
disabled_readonly_text_color=None,
right_click_menu=None,
visible=True,
default_text是输入框的默认值设定,key是元素唯一标识符,size是宽和高,disabled是元素禁用状态,password_char是密码字符,一般是"*",justification是对齐方式,有'r','l','c'三种方式,background_color是输入框的颜色设定,text_color是文本颜色设定,font是输入框字体和字号的设定,tooltip是悬浮提示文本,border_width是边界线设定,enable_events是元素的事件属性,do_not_clear是输入框的内容发生事件以后是否桥清除,是布尔值,focus是焦点设定,pad是元素间隔设定,disabled_readonly_background_color是 元素禁用时的背景颜色设定,disabled_readonly_text_color是元素禁用是的文本颜色设定,right_click_menu是右键调出菜单,visible是元素的是否可见的设定。
元素焦点设定
使用window[key].SetFocus()方法可以设定焦点。
元素更新
单行输入框有7种,分别是
value=None,# str : 更新输入框内的文本
disabled=None,# bool : 更新元素的禁用状态# 如果为True,输入框变成只读状态,无法写入。
select=None,# bool: 元素选中# 如果为True,输入框内的文本被全选中。# 和focus或者set_focus 一起使用。
visible=None,# bool : 更新元素的可见状态
text_color=None,# str : 更新输入框内的文本颜色
background_color=None,# str : 更新输入框的背景颜色
move_cursor_to="end"# 光标移动文本的最后。# 和value,focus 一起使用。
悬浮文本设定
使用window[key].SetTooltip('')可以进行悬浮文本的设定。
我们来创建一个单行输入框吧。
#引入模块
import PySimpleGUI as sg
#创建元素
#在layout中输入sg.In("第一个单行输入框")之后就可以为他搞属性了!
layout=[
sg.In("第一个单行输入框")]#创建窗口
window=sg.Window('python图形化开发教程',layout)
#重复检测事件+重复刷新窗口
while True:event,values=window.read() # print(event,values)#按x退出循环if event==None: break#关闭窗口
window.close()
下一章,我们来学习按钮。
按钮元素
创建按钮
按钮写作sg.Button(''),简写为sg.B(""),按钮的属性有
button_text="",
# 显示在按钮上的文本
key=None,
# 元素的唯一标识符
tooltip=None,
# 悬浮文本
disabled=False,
# 元素禁用设定,如果为True,点击按钮也无法发生事件。
image_filename=None,
# 图片路径,按钮用图片表示
# 只支持GIF和PNG格式
# 和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_button=None,
# 按钮上的文本自动调节
button_color=None,
# 按钮颜色
disabled_button_color=None,
# 按钮元素禁用时显示的按钮颜色
font=None,
# 字体名称,大小设定
bind_return_key=False,
# 绑定回车键
# 如果设定为True,回车键会使此元素被点击。
focus=False,
# 焦点设置
pad=None,
# 和其他元素之间间隔设定
visible=True,
# 元素的可见状态设定
# 如果为True,元素则不可见。
image_data和image_filename只能使用一个。
Update属性更新
按钮有几种可以更新的属性,可以用于更新:
text=None,
button_color=(None, None),
disabled=None,
image_data=None,
image_filename=None,
visible=None,
image_subsample=None,
disabled_button_color=(None, None),
image_size=None
这节课就到这里,下一节,我们来学习列表。
列表
创建列表
列表写作sg.Listbox(),简写sg.LB(),属性有
values,
# 列表或者元祖等
default_values=None,
# 默认选中的值或者列表
key=None,
# 元素的唯一标识符
select_mode=None,
# 选择模式,有效值包含如下4种。
# single ,单选,更换时点击选择
# multiple ,可以多选,逐一点击选择
# browse ,单选,鼠标按住也可以更换选择
# extended ,可以多选,鼠标按住也可以扩展选择
enable_events=False,
# 元素的事件属性
# 如果设定为True,元素列表项目被选中时会发生事件。
bind_return_key=False,
# 绑定回车键
# 如果设定为True,回车键被按下时相当于此元素被点击
size=(None, None),
# 字符宽度,行高
disabled=False,
# 元素是否禁用
auto_size_text=None,
# 如果为True,元素自动根据内容大小调整
font=None,
# 设置字体名称或者大小
no_scrollbar=False,
# 如果为True,则没有滚动条
background_color=None,
# 背景颜色设定
text_color=None,
# 字体颜色设定
pad=None,
# 元素间隔设定
tooltip=None,
# 悬浮文本
right_click_menu=None,
# 右击调出菜单
visible=True,
# 元素可见状态设定
元素更新
列表的几种更新方式:
values=None,
# 元祖或者列表
disabled=None,
# bool : 更新元素是否禁用
set_to_index=None,
# 高亮显示设定的索引,Union[int, list, tuple]
# 注意!单击只是高亮显示,并未选中。双击才是高亮显示+选中。
# 单击获取值时,不用valuse(key),而是window[key].get()
scroll_to_index=None,
# int : 将设定的索引跳到要显示第一行
select_mode=None,
# 更新元素的选择模式,有效值包含如下4种
# single ,单选,更换时点击选择
# multiple ,可以多选,逐一点击选择
# browse ,单选,鼠标按住也可以更换选择
# extended ,可以多选,鼠标按住也可以扩展选择
visible=None
# bool: 更新元素的可见状态
下拉菜单
创建下拉菜单
下拉菜单写作sg.Combo(),是输入框和下拉菜单的一个组合部件,可以下拉或者输入,但是不能多选,它有如下几种属性:
values,
# 显示下拉菜单信息,列表或者元祖
default_value=None,# initial value
# 默认选中
key=None,
# 元素的唯一标识符
size=(None, None),
# 元素宽度,行高
auto_size_text=None,
# 元素根据文本自动调节
background_color=None,
# 背景颜色设定
text_color=None,
# 文本颜色设定
enable_events=False,
# 元素事件属性
# 如果设定为True,当元素被选中时,会发生一个事件。
disabled=False,
# 元素禁用状态设定,
# 设定为True时,元素不能进行选择,也不能输入。
pad=None,
# 元素间隔设定
tooltip=None,
#str: 悬浮文本设定
readonly=False,
# 元素只读属性,只能选择,不能输入内容。
font=None,
# 元素字体名称或者大小设定
visible=True,
# 元素可见状态设定
元素更新
下拉菜单有下面的属性是可以更新的:
value=None,
# 更新默认选中的选项
values=None,
# 更新显示的所有下拉菜单文本
set_to_index=None,
# 高亮显示设定的索引的文本
disabled=None,
# 更新元素的禁用状态
readonly=None,
# 更新元素是否只读
font=None,
# 更新元素的字体名称或者大小
visible=None
单选框
创建单选框
单选框写作sg.R(),一组里面只能选择一项,它有如下几种属性:
text,
# str 文本用于显示在单选框旁边
group_id,
#这个id如果和其他单选框一样,就只能在这些组里选择
# 组ID
key=None,
# 元素的唯一标识符
default=False,
# bool 如果为True,则默认选中
disabled=False,
# 设定禁用状态
size=(None, None),
# 设定元素宽度,行高
auto_size_text=None,
# bool 默认为True
# 元素根据文本自动调整大小
background_color=None,
# 元素背景颜色
text_color=None,
# 元素文本颜色
font=None,
# 字体名称和大小设定
pad=None,
# 元素间隔设定
tooltip=None,
# 悬浮文本设定
enable_events=False,
# 元素事件属性
# 当设定为True时,选框被选中时会发生事件
visible=True,
# 设定元素的可见状态
更新元素
单选框有6中更新方法:
value=None,
# bool 如果为True,此单选框被选中,同组的其他选框更新为未选中。
text=None,
# str 更新显示在按钮旁边的文本
background_color=None,
# 更新背景颜色
text_color=None,
# 更新文本颜色
disabled=None,
# bool 更新元素的禁用状态
visible=None
# bool 更新元素的可见状态
复选框
复选框简写sg.CB(),和单选框差不多,但是可以多选。
创建复选框所有的属性
text,
# 文本显示在选框旁边
default=False,
# bool 如果为True,则选中
size=(None, None),
# 尺寸设定,元素的宽度和行高
auto_size_text=None,
# bool 默认为True
font=None,
# (str,int)字体的名称和大小设定
background_color=None,
# 背景颜色设定
text_color=None,
# 字体颜色设定
enable_events=False,
# bool 元素的事件属性
disabled=False,
# bool 元素的禁用状态
key=None,
# 元素的唯一标识符
# 规范key='-CHECKBOX-'
pad=None,
# 和周围元素的间隔((int,int),(int,int)) 左右上下
tooltip=None,
# str 悬浮文本设定
visible=True,
# bool 元素的可见状态设定
元素更新属性
这个元素可以更新的属性不多,没有几个:
value=None,
# 更新选中状态
# bool 如果为True,则选中,如果为False,则清空选中状态
text=None,
# str 更新选框旁边的文本
background_color=None,
# 更新元素的背景颜色
text_color=None,
# 更新元素的文本颜色
disabled=None,
# 更新元素的禁用状态
visible=None
# 更新元素的可见状态
滑块
滑块写作sg.Slider(),有水平的,也有垂直的。
创建滑块
range=(None, None),
# 滑块范围(最小值,最大值)
#这是一个变量,不是range()函数
key=None,
# 元素的唯一标识符 规范书写key='-SLIDER-'
default_value=None,
# 滑块初始所处位置
resolution=None,
# 滑块值变动的最小单位值
tick_interval=None,
# 刻度值标记
orientation=None,
# 方向设定 水平方向或者垂直方向
# 有效值'horizontal' or 'vertical'
# 支持简写:'h' or 'v'
disable_number_display=False,
# bool 默认为False,如果为True,滑块旁的数字不显示。
border_width=None,
# 边界线宽度
relief=None,
# 浮雕设计
# 属性有'raised','sunken','flat','ridge','solid','groove'几种
enable_events=False,
# 元素的事件属性
disabled=False,
# 元素禁用状态设定
size=(None, None),
# 元素的尺寸设定 宽度和行高
font=None,
# 字体名称和大小设定
background_color=None,
# 滑块背景颜色设定
text_color=None,
# 元素文本颜色设定
pad=None,
# 元素间隔设定((int,int),(int,int))
tooltip=None,
# 元素悬浮文本设定
visible=True,
# 元素可见状态设定
update方法
这个元素有下面这个可以更新的属性:
value=None,
range=(None, None),
disabled=None,
visible=None
图片显示
图片显示写作sg.Image(),支持GIF、PNG ,也可以是base64字符串。
显示图片
图片元素有如下这些属性:
filename=None,
data=None,
#base64编码的字符串,和filename二选一使用
background_color=None,
#背景颜色设定
size=(None, None),
# 图片 宽度和高度设定(pix)
pad=None,
#和周围元素间的间隔 ((int,int),(int,int))
# 左右上下顺序
key=None,
# 元素的唯一标识符
tooltip=None,
# 元素的悬浮文本
right_click_menu=None,
# 右击调出菜单 ['开始',['开始','中止','结束']]
visible=True,
# 元素可见状态 bool
enable_events=False,
# 元素事件属性,默认为False
图片元素的更新
图片元素有这些更新方法:
filename=None,
data=None,
size=(None, None),
visible=None
容器——列元素
列元素简写sg.Col(),是一个容器元素,用于在窗口的布局中创建布局。
元素创建
layout,
# 将在“列”容器中显示的布局 [[sg.T('hello world')]]
background_color=None,
# 整栏背景色
size=(None, None),
# (宽度,高度)以像素为单位的尺寸
pad=None,
# 与周围元素间的间隔设定
scrollable=False,
# 如果为True,则滚动条将添加到该列
vertical_scroll_only=False,
# 如果为True,则不会显示水平滚动条
right_click_menu=None,
# 右击调出菜单
key=None,
# 元素的唯一标识符
visible=True,
# 元素的可见状态设定
justification="left",
# 为列本身设置对齐方式
element_justification="left",
# 列内所有元素的对齐方式
# 有效值为 left,center,right
vertical_alignment=None,
# 垂直对齐方式
# 有效值为top,bottom,center
grab=None,
# 如果设定为True,可以拖拽此元素移动窗口
expand_x=None,
# 如果为True,则列将自动沿X方向扩展以填充可用空间
expand_y=None,
# 如果为True,则列将自动沿y方向扩展以填充可用空间
元素更新
window[key].Update(visible=None)
Frame
frame写作sg.Frame(),也是一个框架。
元素创建
这个元素的属性有:
title,
# 标题文本
layout,
# 容器内元素布局
# 示例:[[sg.In()]]
title_color=None,
# 标题文本颜色设定
background_color=None,
# 框架元素背景颜色
title_location=None,
# 标题所处位置
# e,es,en,s,se,sw,w,ws,wn,n,ne,nw
# 默认为nw
relief="groove",
# 浮雕设计
size=(None, None),
# 元素的宽度和行高
font=None,
# 可以设置字体名称,大小等等
pad=None,
# 和周围元素间隔的设定((left, right), (top, bottom))
border_width=None,
# 框架元素的线条宽度
key=None,
# 框架元素的唯一标识符
tooltip=None,
# 悬浮文本
right_click_menu=None,
# 右击调出菜单
visible=True,
# 元素可见状态设定
element_justification="left",
# 框架内元素的对齐方式
# 有效值 left,right,center
vertical_alignment=None,
# 垂直对齐方式
# top bottom center
元素更新
这个元素可以更新的属性有:
value=None,
visible=None
TabGroup and Tab
TabGroup里只能放tab标签:
[[sg.Tab('Tab1',tab1_layout,),sg.Tab('Tab2',tab2_layout)]],
Tab创建时的属性
title,
# 标签上显示的文本
layout,
# 标签内包含的布局
background_color=None,
# 标签的背景颜色设定
font=None,
# 字体名称,大小设定
pad=None,
# 周围元素的间隔设定
disabled=False,
# 禁用状态设定
border_width=None,
# 边界线宽度设定
key=None,
# 元素的唯一标识符
tooltip=None,
# 悬浮文本设定
right_click_menu=None,
# 右击调出菜单
visible=True,
# 元素可见状态设定
element_justification="left",
# 容器内元素的对齐方式
# 有效值: left,right,center
TabGroup属性
TabGroup创建时的属性
layout,
# 标签组内的tab布局,注意sg.Tab()要写在第一行。
tab_location=None,
# 标签标题所处的位置
# 有效值有12个,分别为left, right, top, bottom, lefttop, leftbottom, righttop, rightbottom, bottomleft, bottomright, topleft, topright
title_color=None,
# 标题文本颜色(未选中时)
tab_background_color=None,
# 所有标签背景颜色(未选中时)
selected_title_color=None,
# 选中时标题文本颜色
selected_background_color=None,
# 选中时标签背景颜色
background_color=None,
# 标签标题所在空白区域的背景颜色
font=None,
# 字体名称,大小设定
enable_events=False,
# 元素的事件属性
# 切换标签元素就会发生事件。
pad=None,
# 和周围元素间隔的设定
border_width=None,
# 边界线宽度设定
key=None,
# 元素的唯一标识符
tooltip=None,
# 悬浮文本设定
visible=True,
# 元素可见状态设定
TabGroup更新属性
title=None,
disabled=None,
visible=None
Popup弹窗介绍
popup弹窗写作sg.popup(),是一种非常常用的弹窗,它的属性有:
args=*<1 or N object>,
# 可变参数
title=None,
# 弹窗标题,如果未设定,则默认显示可变参数的第一个文本作为标题。
button_color=None,
# (文本颜色,背景颜色)
background_color=None,
# 弹窗的背景颜色
text_color=None,
# 弹窗上面的文本颜色
auto_close=False,
# 如果设定为True,弹窗会自动关闭界面
auto_close_duration=None,
# 自动关闭窗口之前界面持续的时间(以秒为单位)
custom_text=(None, None),
# 自定义按钮上要显示的文本。可以设定一个或者两个
non_blocking=False,
# 非阻塞设定。如果为True,立即执行下一步。不需要等待用户的输入。
font=None,
# 字体大小,名称设定
no_titlebar=False,
# 不显示标题栏。
grab_anywhere=False,
# 如果为True,拖动界面进行移动。
keep_on_top=False,
# 如果为True,保持界面在屏幕的最前方
location=(None, None),
# 界面出现的位置
any_key_closes=False,
# 如果为True,敲打任意键盘就会关闭界面.
# 如果为False,只用X窗口关闭按钮,用户选择,以及回车键才会关闭窗口。
image=None,
# 显示图片(支持base64)
modal=True
# 模态窗口设定。
# 除非关闭此窗口否则其他界面不能进行操作。
window窗口常用属性
title,
# 窗口标题设定
layout=None,
# 布局设定
location=(None, None),
# 默认窗口出现的位置
size=(None, None),
# 窗口宽高设定
element_padding=None,
# 元素间间隔设定
button_color=None,
# 按钮元素颜色设定(文本颜色,背景颜色)
font=None,
#(字体名称,字体大小)
background_color=None,
# 背景颜色设定
auto_close=False,
# 界面自动关闭设定
auto_close_duration=3,
# 默认为3秒,自动关闭前界面持续打开时间
no_titlebar=False,
# 界面无标题栏设定
grab_anywhere=False,
# 拖拽窗口设定。
keep_on_top=False,
# 如果为True,界面保持在屏幕的最前方
resizable=False,
# 如果为True,界面生成后可以调整大小
disable_close=False,
# 如果为True,窗口关闭按钮将不起作用
disable_minimize=False,
# 如果为True,窗口最小化按钮将不起作用
right_click_menu=None,
# 右击调出菜单
transparent_color=None,
# 界面透明设定 =sg.theme_background_color()
element_justification="left",
# 元素对齐方式设定。有效值 left,right,center
Multiline多行文本框
创建Multiline
Multiline的属性有:
default_text="",
# 默认显示的文本
disabled=False,
# 元素禁用状态设定
border_width=None,
# 边界线条宽度设定
size=(None, None),
# 宽度和行高设定
background_color=None,
# 背景颜色设定
text_color=None,
# 文本颜色设定
enable_events=False,
# 元素事件属性
key=None,
# 元素的唯一标识符
write_only=False,
# 设定为True时,文本框只提供用户写入,窗口不读取。无返回值。
reroute_stdout=False,
# print语句内容会显示在此文本框内
reroute_cprint=False,
# 使用cprint将内容打印到此文本框内。详细参考sg.cprint()
reroute_stderr=False,
# 捕捉异常时将文本写在此元素内. sys.stderr.write('?')
autoscroll=False,
# 如果为True,更多数据添加到末尾时元素的内容将自动滚动
focus=False,
# 焦点设置
font=None,
# 字体名称和大小设定
pad=None,
# 和周围元素间间隔的设定
tooltip=None,
# 悬浮文本设定
justification=None,
# 对齐方式设定
right_click_menu=None,
# 右击调出菜单设定
visible=True,
# 元素可见状态设定。
do_not_clear=True,
# 默认为True,如果设定为False,窗口读取一次,内容就会自动清除。
cprint方法
cprint方法可以将输出打印到多行文本框中,它的属性有:
args=*<1 or N object>,
# 可变参数,
end=None,
# 结束符 默认为回车键
sep=" ",
# 分隔符 默认为空格键
text_color=None,
# 可以简写成t
background_color=None,
# 可以简写成b
colors=None,
# 可以简写成c
key=None,
#元素的唯一标识符
justification=None
#文本对齐方式
update方法
多行文本框有如下属性可以更新:
value=None,
# 更新内容
disabled=None,
# 元素禁用
append=False,
# 如果设定为True,要更新的内容会接在原来文本的下方。原来的文本不会消失。
font=None,
# 字体大小名称设定
text_color=None,
# 文本颜色设定
background_color=None,
# 背景颜色设定
text_color_for_value=None,
# 更新的文本的字体颜色设定
background_color_for_value=None,
# 更新的文本的背景颜色设定
visible=None,
# 元素可见状态更新。默认可见
autoscroll=None,
# 更新文本是否自动滚动。默认不自动滚动
justification=None
# 更新文本对齐方式
print方法
print方法可以这样调用:
window[key].print()
print方法的属性有
args=*<1 or N object>,
# 可变参数
end=None,
# 要打印的元素的结束符 默认为换行 end='\n'
sep=None,
# 要打印的元素的分隔符 默认为空格 sep=' '
text_color=None,
# 要打印的元素文本颜色
background_color=None,
# 要打印的元素这一行的背景颜色
justification=None
# 要打印的元素对齐方式
垂直分割线
垂直分割线写作sg.VerticalSeparator(),它的属性有
color=None,
key=None,
pad=None
结语
好了,这个图形化教程你已经学完了,恭喜!