python图形化开发教程

简介

学习此教程必须先学习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

结语

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

你可能感兴趣的:(python,python教程,python,开发语言)