一、第一个界面
1. 了解模块代码的组成
导入库.(PySimpleGUI) 定义布局,确定行数 创建窗口 事件循环 关闭窗口
import PySimpleGUI as sg
layout = [
[ sg. Text( '请输入您的信息' ) ] ,
[ sg. Text( '姓名' ) , sg. InputText( '小帽' ) ] ,
[ sg. Text( '性别' ) , sg. InputText( '男' ) ] ,
[ sg. Text( '国籍' ) , sg. InputText( '中国' ) ] ,
[ sg. Button( '确定' ) , sg. Button( '取消' ) ]
]
window = sg. Window( 'Python GUI' , layout)
while True :
event, values = window. read( )
if event == None :
break
window. close( )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
二、如何定义窗口返回值 – 事件
1. 窗口关闭事件 。
窗口关闭按钮是一个特殊的按钮,在界面的右上角X 编写方法:
if event== None :
break
if event== sg. WIN_CLOSED:
break
注意!!!
定义窗口关闭事件是至关重要的,当你忘记定义窗口关闭事件,然后又点击了窗口右上角的X按钮, 它会默默的消耗你100%的CPU。
2. 按钮点击事件
if event== '确认' :
print ( '确认' )
sg. Popup( '执行确认任务' )
if event== '取消' :
print ( '取消' )
sg. Popup( '执行取消任务' )
3. 判断事件是否发生的几种方式
if event== 'Exit' :
sg. Popup( '您点击了Exit' )
break
if event in ( 'Exit' , None ) :
sg. Popup( '您点击了Exit或者窗口关闭按钮' )
break
if event. startswith( '确认' ) :
sg. Popup( '您点击了Exit**的按钮' )
break
if event. endswith( '确认' ) :
sg. Popup( '您点击了**Exit的按钮' )
break
4. 其他元素事件
像文本元素,输入框,下拉菜单等事件属性默认是关闭的。 当手动设置他们的事件属性enable_events=True为真时,他们也将具有事件属性。
layout= [ [ sg. Text( 'OK' , enable_events= True ) ] ]
. . .
if event== 'OK' :
sg. Popup( '文本元素OK的事件属性为真' )
5. 总结代码
import PySimpleGUI as sg
layout = [
[ sg. Text( '请输入您的信息' ) ] ,
[ sg. Text( '姓名' , enable_events= True ) , sg. InputText( '小帽' ) ] ,
[ sg. Text( '性别' ) , sg. InputText( '男' ) ] ,
[ sg. Text( '国籍' ) , sg. InputText( '中国' ) ] ,
[ sg. Button( '确认' ) , sg. Button( '取消' ) ]
]
window = sg. Window( 'Python GUI' , layout)
while True :
event, values = window. read( )
if event == None :
break
if event == '确认' :
sg. Popup( '执行了确认任务' )
if event == '取消' :
sg. Popup( '执行了取消任务' )
if event == '姓名' :
sg. Popup( '这是个文本' )
window. close( )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
三、窗口读取返回值 – 值
1. 通过列表索引获取返回值-值
list = [ 1 , 2 , 3 , 4 , 5 ]
print ( list )
print ( list [ 0 ] )
那么如何通过列有索引来获取窗口的返回值呢?
方法一:获取界面全部的值 print(values) 方法二:获取界面指定的值 print(values[0]) ,print(values[1])
import PySimpleGUI as sg
layout = [
[ sg. Text( '请输入您的信息' ) ] ,
[ sg. Text( '姓名' ) , sg. InputText( '小帽' ) ] ,
[ sg. Text( '性别' ) , sg. InputText( '男' ) ] ,
[ sg. Text( '国籍' ) , sg. InputText( '中国' ) ] ,
[ sg. Button( '确认' ) , sg. Button( '取消' ) ]
]
window = sg. Window( 'Python GUI' , layout)
while True :
event, values = window. read( )
if event == None :
break
if event == '确认' :
print ( values[ 0 ] )
window. close( )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
2. 通过字典的键获取返回值-值
界面默认的返回值是通过列表索引获得指定值 但是当给元素设定唯一标识符key 则该元素无法通过列表索引 只能通过字典key进行索引。 print(values[key])
import PySimpleGUI as sg
layout = [
[ sg. Text( '请输入您的信息' ) ] ,
[ sg. Text( '姓名' ) , sg. InputText( '小帽' , key= 'name' ) ] ,
[ sg. Text( '性别' ) , sg. InputText( '男' ) ] ,
[ sg. Text( '国籍' ) , sg. InputText( '中国' ) ] ,
[ sg. Button( '确认' ) , sg. Button( '取消' ) ]
]
window = sg. Window( 'Python GUI' , layout)
while True :
event, values = window. read( )
if event == None :
break
if event == '确认' :
print ( values[ 'name' ] )
window. close( )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
四、如何设定主题
1. 了解主题
主题 theme 包括:窗口的背景颜色,文本Text颜色,按钮的字体颜色和按钮颜色等等。 默认主题:“Dark Blue 3”
2. 如何直观查看有效主题
import PySimpleGUI as sg
sg. theme_previewer( )
3. 如何获取有效主题
import PySimpleGUI as sg
print ( sg. theme_list( ) )
4. 如何设定主题
sg. theme( '主题名称' )
sg. theme( '' )
5. 总结代码
import PySimpleGUI as sg
sg. theme( '' )
sg. Popup( '弹窗演示' )
五、如何修改主题
1. 如何获取主题的部分设置
获取方式:print(sg.theme_background_color()) 常用到的一些主题属性:
theme_background_color
theme_border_width
theme_button_color
theme_element_background_color
theme_element_text_color
theme_input_background_color
theme_input_text_color
theme_progress_bar_border_color
theme_progress_bar_color
theme_slider_border_width
theme_slider_color
theme_text_color
theme_text_element_background_color
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
2. 如何修改主题的部分设置
import PySimpleGUI as sg
sg. theme( 'LightBlue2' )
sg. Popup( '弹窗演示' )
sg. theme_button_color( ( 'black' , '#7186C7' ) )
sg. popup( '修改后的LightGreen3 Theme' , '按钮文字是黑色的' )
3. 总结代码
import PySimpleGUI as sg
sg. theme( 'LightBlue2' )
sg. Popup( '弹窗演示' )
sg. theme_button_color( ( 'black' , '#7186C7' ) )
sg. popup( '演示弹窗' , '按键字体变黑色' )
六、如何自定义窗口
1. 用for循环快速定义元素
a= 'djfsdldkfj'
for i in a:
print ( i)
a= [ 1 , 23 , 'A' , '程序员' ]
for i in a:
print ( i)
layout= [ [ sg. In( i) for i in 'ABCD' ] ]
layout= [ [ [ sg. In( i) ] for i in [ '北京' , '上海' , '深圳' ] ] ]
2. 布局和元素的另一种组合方式
layout= [
[ sg. Text( '请输入基本信息' ) ]
[ sg. Text( '姓名' ) , sg. In( ) ] ,
[ sg. Text( '性别' ) , sg. In( ) ] ,
[ sg. Text( '籍贯' ) , sg. In( ) ] ,
[ sg. B( '确认' ) , sg. B( '取消' ) ]
]
layout= [
[ sg. Text( '请输入基本信息' ) ] ,
[ sg. Text( '姓名' ) ] + [ sg. In( ) ] ] + [
[ sg. Text( '性别' ) ] + [ sg. In( ) ] ] + [
[ sg. Text( '国籍' ) , sg. In( ) ] ,
[ sg. B( '确认' ) , sg. B( '取消' ) ]
]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
3. 总结代码
import PySimpleGUI as sg
layout= [
[ sg. Text( '请输入基本信息' ) ] ,
[ sg. Text( '姓名' ) ] + [ sg. In( ) ] ] + [
[ sg. Text( '性别' ) ] + [ sg. In( ) ] ] + [
[ sg. Text( '国籍' ) , sg. In( ) ] ,
[ sg. B( '确认' ) , sg. B( '取消' ) ]
]
window = sg. Window( 'Python GUI' , layout)
while True :
event, values = window. read( )
if event == None :
break
if event == '确认' :
print ( values[ 'name' ] )
window. close( )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36