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()

九、中英文切换页面(*)

python平面 python平面设计_python平面

# 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()

十四、编写一个红绿灯界面(*)

python平面 python平面设计_输入框_02

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()