python图形界面开发工具之PySimpleGUI(python 图形界面)

网友投稿 778 2022-09-01


python图形界面开发工具之PySimpleGUI(python 图形界面)

缘起:

工作中使用频次较高的操作都需要登录到某个管理平台上进行选择操作,如果是给别人使用还算可以, 但是作为平常使用还是感觉较为繁琐,于是打算开发一个桌面小工具解决这个痛点,达到使用时及时调起使用,方便而节约时间.

Electron,python,flutter...工具框架很多, 前端不擅长,flutter需要重新了解, 最终多款之后选择基于python的一个工具PySimpleGUI,好处在这里就不说了,可以自行百度

[开始]

PySimpleGUI是基于Python的图形界面开发工具,相较于Python自带的图形界面开发库Tkinter,第三方图形界面开发工具PyQT、WxPython等,其具有基础要求低、代码量少、修改方便、涵盖内容多等优势。

需要使用的工具1、Python 3.6 及以上版本2、外部库:

①PySimpleGUI(主要库,基于Python自带的GUI图形设计库Tkinter)

②PySimpleGUIWX(基于GUI图形设计库WxPython)

③PySimpleGUIQT(基于GUI图形设计库PySID2)

④PySimpleGUIWEB(基于GUI网页端图形设计库Remi)

3、第三方编程软件

推荐使用 Sublime Text 或者 PyCharm 两种中的一种软件

[安装]

pip install -i pysimplegui pysimpleguiwx pysimpleguiqt pysimpleguiweb

示例:

#1) 导入库import PySimpleGUI as sg#2) 定义布局,确定行数layout=[ [], [], [] ]#3) 创建窗口window=sg.Window('Python GUI',layout)#4) 事件循环while True: event,values=window.read() #窗口的读取,有两个返回值(1.事件 2.值) print(event,values) if event==None: #窗口关闭事件 break#5) 关闭窗口window.close()

1、定义窗口关闭事件

窗口关闭按钮是界面右上角的“X”。

if event = None: break或者if event == sg.WIN_CLOSED: break

3、其他元素事件

像文本元素、输入框、下拉菜单等事件属性默认是关闭的。当手动设置他们的事件属性enable_events = Tnue 时,他们也将具有事件属性。

4、通过列表索引获取返回值

列表是最常用的Python数据类型,它可以存放不同的数据类型(str、int、char等等),用中括号括起来,元素之间用逗号隔开。

5、通过列表获取返回值

界面默认的返回值是通过列表索引获得指定值,但是当给元素设定唯一标识符(key),则该元素无法通过列表索引,只能通过字典key进行索引。(print(values[key]))即将文本元素、输入框、下拉菜单等的定位由数字替换为标识符(key)

如:

********************************************************************************************   自定义主题

1、主题内容包含窗口的背景颜色、文本(text)颜色、文本框底色、按钮的字体颜色、按钮颜色等等。

2、查看有效主题

使用代码:

import PySimpleGUI as sgsg.theme_previewer()

3、获取所有有效主题值

使用代码

import PySimpleGUI as sgprint(sg.theme_list())

4、设定主题

①设定指定主题

sg.theme('主题颜色,如Black')

②设定随机主题

sg.theme('')

5、修改部分主题设置

               主题代码

           释义

Background

背景色

Text

文本颜色

Input

输入框底色

Scroll

滚轮颜色

Text_Input

输入框文字颜色

Button

按钮颜色(字体颜色,按钮颜色)

Border

边界线宽度

Slide_Depth

滑块宽度

sg.theme_(修改内容,如text)_color(('主题颜色,如Black'))

eg: sg.theme_Text_color

******************************************************************************************  自定义窗口内容

1、使用for循环快速自定义窗口

①for 循环前面是个小括号时,从左向右遍历

如:

layout=[ [[sg.Text(i) for i in "ABCD"]] ]

②for循环前面是个中括号时从上向下遍历

如:

layout=[ [[sg.Text(i) ]for i in "ABCD"] ]

2、元素之间的组合

①直接位于一个列表里面

layout=[ [sg.Text('请输入基本信息')], [sg.Text('姓名'),sg.In()], [sg.Text('性别'),sg.In()], [sg.Text('国籍'),sg.In()], [sg.B('确认'),sg.B('取消')] ]

②多个列表结合

layout_1 = [ [sg.Text('请输入基本信息')], [sg.Text('姓名'),sg.In()], ]layout_2 = [ [sg.Text('性别'), sg.In()], [sg.Text('国籍'),sg.In()], ]layout_3 = [ [sg.B('确认'),sg.B('取消')] ]layout = layout_1 + layout_2 + layout_3

3、元素间除了用“,”隔开以外,还可以用“]+[”替代。

如:

layout=[ [sg.Text('请输入基本信息')], [[sg.Text('姓名')]+[sg.In()] ]+[ [sg.Text('性别')]+[sg.In()] ]+[ [sg.Text('国籍'),sg.In()], [sg.B('确认'),sg.B('取消')]]]

*************************************************************************** 文本框

一、Text元素及内容

①右击调出菜单,写法为:

[sg.Text('请输入基本信息',right_click_menu=['0',['1',['1-1','1-2'],'2','3']])]

运行:

二、元素更新

1、更新方法

window[key].update()window[key].Update()

2、可更新元素

update( value=None, # str 更新文本 background_color=None, # str 更新文本背景颜色 text_color=None, # str 更新文本颜色 font=None, # 更新字体的名称或者大小 visible=None # 更新元素的可见状态)

①更新文本显示:

window[key].update(value='')#或者window[key].update('')

②更新文本背景颜色

window[key].update(background_color='red')

③更新文本颜色

window[key].update(text_color='yellow')

④更新字体名称或者大小

window[key].update(font='黑体')#或者window[key].update(font=('',22))

⑤更新元素的是否可见

window[key].update(visible=False)

********************************************************************* 单行输入框

一、单行输入框元素及内容

元素

内容

default_text=''

默认值设定,可以为空字符串

key=None

元素的唯一标识符,规范 key='-INPUT-'

size=(None, None)

宽,高

disabled=False

bool:元素禁用,如果为True则禁用,无法输入任何值

password_char=""

密码字符,一般设置为*

justification=None

对齐方式:'r'、'l'、'c'

background_color=None

输入框的颜色

text_color=None

输入框的文本颜色

font=None

输入框字体的名称或者大小设定

tooltip=None

str: 悬浮文本。当光标置于该元素上方时,设置的文本会显示

border_width=None

输入框边界线宽度设定

enable_events=False

bool : 输入框的事件属性。如果设定为True,输入值时会发生一个事件

do_not_clear=True

bool : 输入框内容不被清除。如果为False,一发生事件,该输入框内的值会被清除

focus=False

bool : 设定焦点。如果为真,则光标显示在此输入框

pad=None

元素之间彼此间隔距离,数字顺序为左右上下。(int, int)、((int, int),(int,int))、(int,(int,int))、 ((int, int),int)或者(left/right, top/bottom)、((left, right), (top, bottom))

disabled_readonly_background_color=None

str: 元素禁用时的背景颜色设定

disabled_readonly_text_color=None

str: 元素禁用时的文本颜色设定

right_click_menu=None

右击按钮菜单 List[List[Union[List[str],str]]],设定后,右击此元素会调出菜单(同文本)

visible=True

元素的可见状态,如果为False、,则界面不显示该元素

二、设置元素焦点(即移动光标)

`window[key].SetFocus()``window[key].set_focus()`

三、元素更新

`window[key].update()`

`window[key].Update()`

可更新元素:

update( 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 一起试着使用吧(先设置焦点))

四、SetTooltip方法,用于元素悬浮文本的设定:

`window[key].SetTooltip('')``window[key].set_tooltip('')`

************************************************************** 按钮

一、按钮元素介绍

更新内容:

Update( text=None, # 按钮上显示的文本 button_color=(None, None), # 按钮颜色 disabled=None, # 元素禁用设定 image_data=None, # 图片的base64格式 image_filename=None, # 图片的路径 visible=None, # 元素可见状态设定 image_subsample=None, # 元素大小设定 disabled_button_color=(None, None), # 元素禁用时显示的文本和按钮颜色 image_size=None # 图片尺寸设定)

************************************************************************************** 列表元素

一、列表元素介绍

二、更新方法

window[key].update()window[key].Update()

可更新元素:

**************************************************************************** 下拉菜单

一、下拉菜单元素介绍

元素

内容

Values = ""

List[Any]或者Tuple[Any] 。显示下拉菜单信息,列表或者元祖

default_value=None

初始值设定,默认选中

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

元素可见状态设定

二、更新方法

window[key].update()window[key].Update()

元素可以更新的属性:

update( value=None, # 更新默认选中的选项① values=None, # 更新显示的所有下拉菜单文本 set_to_index=None, # 高亮显示设定的索引的文本 disabled=None, # 更新元素的禁用状态 readonly=None, # 更新元素是否只读 font=None, # 更新元素的字体名称或者大小 visible=None)

注意:

当更新value时,即使处于“readonly=True”,即只读状态下,若“Values”内没有,仍然可以更改,但当重新选择后值消失。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java求最小生成树的两种算法详解
下一篇:python之常用开发包sshtunnel(python程序包)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~