Python图形界面
一、第一个界面
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. 窗口关闭事件 。
- 窗口关闭按钮是一个特殊的按钮,在界面的右上角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. 通过列表索引获取返回值-值
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()
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. 了解主题
- 主题 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
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('取消')]
]
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()