简介

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或者Falseenable_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,

# 图片路径,按钮用图片表示

# 只支持GIFPNG格式

# 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_dataimage_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(),支持GIFPNG ,也可以是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,

# 垂直对齐方式

# 有效值为topbottomcenter

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",

# 元素对齐方式设定。有效值 leftrightcenter

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

结语

好了,这个图形化教程你已经学完了,恭喜!