Python图形界面
七、文本元素参数设定
import PySimpleGUI as sg
text = '''悯农
唐 李绅
锄禾日当午,
汗滴禾下土。
谁知盘中餐,
粒粒皆辛苦?
'''
layout=[[sg.T(text, # str:要显示的文本。可以包含/n以实现多行。
key='-Text-', # [str, int, tuple, object]:
# 元素唯一标识符,
# 书写规范 key='-NMAE-'。用于元素的定位。
size=(None, None), # (int, int): 元素宽度,行高 size=(30, 20)
font=('宋体',20), # 设定字体的名称,大小 font=None
# font='宋体'
# font=('宋体',int) or font=['宋体',int]
auto_size_text=True, # bool: 元素根据文本自动调节大小 auto_size_text=None
enable_events=False, # bool: 事件属性,设定为True时,点击文本发生事件。
relief='ridge', # 浮雕设计 'raised','sunken','flat','ridge','solid','groove' relief=None
border_width=None, # 设定relief时,用来设定边界宽度 border_width=None
text_color="blue", # 文本颜色 text_color=None
background_color='white', # 文本背景颜色 background_color=None
justification=None, # 对齐方式: 'left','right','center'
pad=None, # 元素间隔设定 记住左右上下
# (int, int) or ((int, int),(int,int))
# or (int,(int,int))or ((int, int),int)
# (left/right, top/bottom) or ((left, right), (top, bottom))
right_click_menu=['1',['1','2','3']], # 右击调出菜单 List[List[Union[List[str],str]]],设定后,右击此元素可以调出菜单。
grab=True, # bool:如果为真,点此元素可以移动拖拽窗口 grab=None
tooltip='这是一个提示文本', # str:悬浮文本 ,当光标置于该元素上方,会显示设定的文本。 tooltip=None
visible=True # bool: 元素可见状态
)]
]
# layout=[
# [sg.T('你好'),sg.T('你好'),sg.T('你好')],
# [sg.T('你好'),sg.T('你好',pad=(30,30)),sg.T('你好')],
# [sg.T('你好'),sg.T('你好'),sg.T('你好')],
# ]
# 3.创建窗口
window = sg.Window('Python GUI', layout)
# 4.事件循环
while True:
event, values = window.read() # 窗口的读取,有两个返回值(1.事件,2.值)
if event == None: # 窗口关闭事件
break
if event == '-Text-':
sg.popup('运行了一个点击事件')
# 5.关闭窗口
window.close()
八、文本元素更新设定
1. 更新方法
window[key].update()
window[key].Update()
2. 文本元素可以更新的属性
update(
value=None, # str 更新文本
background_color=None,#更新文本背景颜色
text_color=None,# 更新文本颜色
font=None,# 更新字体的名称或者大小
visible=None# 更新元素的可见状态
)
3. 总结代码
import PySimpleGUI as sg
layout=[
[sg.T('小帽',key='-Text-'),sg.B('点赞')]
]
# 3.创建窗口
window = sg.Window('Python GUI', layout)
# 4.事件循环
while True:
event, values = window.read() # 窗口的读取,有两个返回值(1.事件,2.值)
if event == None: # 窗口关闭事件
break
if event == '点赞':
window['-Text-'].update(
value='谢谢支持!', # str 更新文本
background_color = 'white', # 更新文本背景颜色
text_color = 'black', # 更新文本颜色
font = ('黑体', 30), # 更新字体的名称或者大小
visible = None # 更新元素的可见状态
)
# 5.关闭窗口
window.close()
九、中英文切换页面(*)
# 1.导入库
import PySimpleGUI as sg
# 2.定义布局,确定行数
layout=[
[sg.B('中文'),sg.B('English')],
[sg.T('请输入基本信息', key='-TITLE-')],
[sg.T('姓名', key='-NAMETXT-',size=(8,1))]+[sg.In()]]+[
[sg.T('性别', key='-SEXTXT-',size=(8,1))]+[sg.In()]]+[
[sg.T('年龄', key='-AGETXT-',size=(8,1)),sg.In()],
[sg.B('确认', key='-CONF-'),sg.B('取消', key='-CANCEL-')]
]
# 3.创建窗口
window = sg.Window('Python GUI', layout)
# 4.事件循环
while True:
event, values = window.read() # 窗口的读取,有两个返回值(1.事件,2.值)
if event == None: # 窗口关闭事件
break
if event == 'English':
window['-TITLE-'].update("Please enter basic information")
window['-NAMETXT-'].update('Name')
window['-SEXTXT-'].update('Sex')
window['-AGETXT-'].update('Age')
window['-CONF-'].update('Confirm')
window['-CANCEL-'].update('Cancel')
if event == '中文':
window['-TITLE-'].update("请输入基本信息")
window['-NAMETXT-'].update('姓名')
window['-SEXTXT-'].update('性别')
window['-AGETXT-'].update('年龄')
window['-CONF-'].update('确定')
window['-CANCEL-'].update('取消')
# 5.关闭窗口
window.close()
十、单行输入框元素的设定
import PySimpleGUI as sg
layout = [
[sg.T('账号:'), sg.In(
'请输入您的账号', # 默认值设定,可以为空字符串
key='-INPUT-', # 元素的唯一标识符,规范 key='-INPUT-'
size=(30, None), # 宽,行高 size=(None, None)
disabled=None, # bool: 元素禁用,如果为True则禁用,无法输入任何值
password_char='', # 密码字符,一般设置为*
justification='l', # 对齐方式 'r','l','c'
background_color='black', # 输入框的颜色
text_color="red", # 输入框的文本颜色
font=('黑体', 15), # 输入框字体的名称或者大小设定
tooltip='这是一个提示文本', # str:悬浮文本
border_width=5, # 输入框边界线宽度设定
enable_events=False, # bool:输入框的事件属性
# 如果设定为True,输入值会发生一个事件
do_not_clear=True, # bool:输入框内容不被清楚
# 如果为False,一发生事件,该输入框内的值会被清除
pad=None, # 元素间隔
disabled_readonly_background_color='black', # str:元素禁用时的背景颜色设定
disabled_readonly_text_color=None, # str:元素禁用时的背景颜色设定
right_click_menu=None, # 右击调出菜单 List[List[Union[List[str],str]]],设定后,右击此元素可以调出菜单。
visible=True # 元素的可见状态,如果为False,则界面不显示该元素
)],
[sg.T('密码:'), sg.In('', focus=True)], # bool:设定焦点,如果为True,则光标显示在此输入框
[sg.B('确定'), sg.B('取消')]
]
# 3.创建窗口
window = sg.Window('Python GUI', layout)
# 4.事件循环
while True:
event, values = window.read() # 窗口的读取,有两个返回值(1.事件,2.值)
if event == None: # 窗口关闭事件
break
if event == '-Text-':
sg.popup('运行了一个点击事件')
# 5.关闭窗口
window.close()
十一、单行输入框元素的更新方法
1. update方法,用于元素的更新
- window[key].update()
- window[key].Update()
2. SetFocus方法,用于元素设置焦点
- window[key].SetFocus()
- window[key].set_focus()
3. SetTooltip方法,用于元素的更新
- window[key].SetTooltip(")
- window[key].set_tooltip(")
import PySimpleGUI as sg
layout = [
[[sg.In(i, key=i)] for i in 'abcd'],
[sg.B('确定'), sg.B('取消')]
]
window = sg.Window('Python GUI', layout)
while True:
event, values = window.read() # 窗口的读取,有两个返回值(1.事件,2.值)
if event == None: # 窗口关闭事件
break
if event == '确定':
window['d'].SetFocus() # 用于更新元素的焦点
window['d'].SetTooltip('666') # 用于更新悬浮文本
window['d'].update(
value='123', # 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.close()
十二、编写一个登录窗口(*)
- 要求:
- 编写窗口
- 用字典嵌套列表的形式,建立用户数据
- 实现用户输入用户名和密码后,判断输入是否正确
- 确认后,弹出窗口“输入正确”或“输入错误”
import PySimpleGUI as sg
User1 = {'用户名':'abc', '密码':'123'}
User2 = {'用户名':'def', '密码':'456'}
UserList = [User1, User2]
layout = [
[sg.T('用户名', size=(8)),sg.In('请输入您的用户名', key='-user-')],
[sg.T('密码', size=(8)),sg.In('', tooltip='密码为3位数字',key='-pwd-',password_char='*')],
[sg.B('确认'),sg.B('取消')]
]
# 创建窗口
window = sg.Window('Python GUI', layout)
# 事件循环
while True:
event, values = window.read() # 窗口的读取,有两个返回值(1.事件,2.值)
if event == None: # 窗口关闭事件
break
if event == '确认':
for user in UserList:
if values['-user-'] == user['用户名'] and values['-pwd-'] == user['密码']:
msg = '输入正确'
break
else:
msg = '输入有误'
sg.Popup(msg)
# 关闭窗口
window.close()
十三、按键元素的设定及更新方法
1. 按键元素的书写方法
sg.B('')
sg.Button('')
2. 按键元素的设定方法
sg.B('确定', image_filename=r'图片路径')
3. 按键元素的更新方法
window[key].Update()
window[key].update()
import PySimpleGUI as sg
image = b'iVBORw0KGgoAAAANSUhEUgAACMwAAAEoCAYAAACuQ/+XAAAMYmlDQ1BJQ0MgU='
layout = [
# [sg.B(image_data=image,key='-python-')]
[sg.B(image_filename='/Users/alex/Downloads/python.png',key='-python-', bind_return_key=True)]
]
# 创建窗口
window = sg.Window('Python GUI', layout)
# 事件循环
while True:
event, values = window.read() # 窗口的读取,有两个返回值(1.事件,2.值)
print(event)
if event == None: # 窗口关闭事件
break
# 关闭窗口
window.close()
十四、编写一个红绿灯界面(*)
import PySimpleGUI as sg
layout = [
[sg.B('绿灯', key='-green-', button_color=('black','green'), size=(20,9))],
[sg.B('黄灯', key='-yellow-', button_color=('black','yellow'), size=(20,9))],
[sg.B('红灯', key='-red-', button_color=('black','red'), size=(20,9))]
]
# 创建窗口
window = sg.Window('红绿灯', layout)
# 事件循环
while True:
event, values = window.read() # 窗口的读取,有两个返回值(1.事件,2.值)
print(event)
if event == None: # 窗口关闭事件
break
if event == '-green-':
window["-green-"].update(button_color=('black','green'))
window["-yellow-"].update(button_color=('black', 'grey'))
window["-red-"].update(button_color=('black', 'grey'))
if event == '-yellow-':
window["-green-"].update(button_color=('black','grey'))
window["-yellow-"].update(button_color=('black', 'yellow'))
window["-red-"].update(button_color=('black', 'grey'))
if event == '-red-':
window["-green-"].update(button_color=('black','grey'))
window["-yellow-"].update(button_color=('black', 'grey'))
window["-red-"].update(button_color=('black', 'red'))
# 关闭窗口
window.close()