Python图形界面编程 PySimpleGUI(2)

文本元素的更新设定方法

在这里插入图片描述

在这里插入图片描述

import PySimpleGUI as pg
layout = [[pg.T('姓名',key='name'),pg.Button('点赞')]]

window = pg.Window('演示',layout)
while True:
    event, values = window.read()
    if event == None:
        break
    if event == '点赞':
        window['name'].update(
            value='谢谢'         # 文本值更新为谢谢
            ,background_color='red'  # 背景颜色更新
            ,text_color='white'      # 字体颜色更新
            ,font=('宋体',10)        # 字体更新
            ,visible=True)           # 可见度更新
        
window.close()

在这里插入图片描述

在这里插入图片描述

layout_ch = [[pg.Button("中文"),pg.Button('English')]
             ,[pg.T("请输入基本信息",key='text')]
             ,[pg.T("姓名",key='name'),pg.In()]
             ,[pg.T('性别',key='sex'),pg.In()]
             ,[pg.T('国籍',key='nationality'),pg.In()]
             ,[pg.Button('确认',key='confirm'),pg.Button('取消',key='cancel')]]

en_dic = {'text':['请输入基本信息','Please enter basic information!'],
          'name':['姓名','Name'],
          'sex':['性别','Sex'],
          'nationality':['国籍','Nationality'],
          'confirm':['确认','Confirm'],
          'cancel':['取消','Cancel']}
flag=0

window = pg.Window('GUI',layout_ch)
while True:
    event, values = window.read()
    if event == 'None':
        break
    if event == pg.WIN_CLOSED:
        break
    if event == 'English':
        flag = 1
        for k,v in en_dic.items():
            window[k].update(en_dic[k][1])
            
    if event == '中文':
        flag = 0
        for k,v in en_dic.items():
            window[k].update(en_dic[k][0])
        
    if event == 'cancel':
        break
    if event == 'confirm':
        if flag == 0:
            pg.Popup('信息录入完成!')
        if flag == 1:
            pg.Popup('information completed!')
    
window.close()

单行输入框元素设定方法

在这里插入图片描述

# 文本元素属性设置和输入框元素的属性设置大部分相同
pg.Text(
    text='',           # 文本内容
    size=(None, None), # 窗口大小
    s=(None, None),   
    auto_size_text=True, # 窗口自适应显示
    click_submits=False,
    enable_events=False,  # 允许文本产生事件
    relief=None,          # 浮雕设计 "RELIEF_" - `RELIEF_RAISED, RELIEF_SUNKEN, RELIEF_FLAT, RELIEF_RIDGE, RELIEF_GROOVE, RELIEF_SOLID`
    font=None,            # ('宋体',20) 字体、大小
    text_color=None,      # 字体颜色
    background_color=None,# 文本背景颜色
    border_width=None,    # 设定 relief 后用来设定边界宽度
    justification=None,   # 对齐方式 'left', 'right', 'center'
    pad=None,             # 元素间隔设定,
    p=None,
    key=None,             # 给一个键用来索引数据
    k=None,
    right_click_menu=None, # 右击显示下拉菜单![1,[1,2,3]]
    expand_x=False,
    expand_y=False,
    grab=None,          # 如果为 True 那么点击此元素可以拖拽窗口
    tooltip=None,       # 光标放上的时候显示提示文本
    visible=True,       # 元素是否可见
    metadata=None,
)

pg.In(
    default_text='',
    size=(None, None),
    s=(None, None),
    disabled=False,          # 禁止输入,输入框不能输入内容
    password_char='',        # 输入密码变成星号
    justification=None,      # 左右对齐或居中 'l' 'r' 'c'
    background_color=None,
    text_color=None,
    font=None,
    tooltip=None,
    border_width=None,
    change_submits=False,
    enable_events=False,     # 如果为 True,那么输入内容的时候就会打印事件!
    do_not_clear=True,       # 事件触发之后输入框依然不被清除
    key=None,
    k=None,
    focus=False,             # 设置焦点,如果 True 则光标放到当前输入框里面
    pad=None,
    p=None,
    use_readonly_for_disable=True,
    readonly=False,
    disabled_readonly_background_color=None,# 当输入框 disable=True 的时候触发,会显示指定颜色来表示输入框不能输入内容
    disabled_readonly_text_color=None, # 与上面相似,禁用时的文本颜色设定
    expand_x=False,
    expand_y=False,
    right_click_menu=None,  # 右键出现菜单(和文本一样)
    visible=True,
    metadata=None,
)

单行输入框的更新设定

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

window[key].update() 方法示例

layout_ch = [[pg.Button("中文"),pg.Button('English')]
             ,[pg.T("请输入基本信息",key='text')]
             ,[pg.T("姓名",key='name'),pg.In(key='name_input')]
             ,[pg.T('性别',key='sex'),pg.In()]
             ,[pg.T('国籍',key='nationality'),pg.In()]
             ,[pg.Button('确认',key='confirm'),pg.Button('取消',key='cancel')]]

en_dic = {'text':['请输入基本信息','Please enter basic information!'],
          'name':['姓名','Name'],
          'sex':['性别','Sex'],
          'nationality':['国籍','Nationality'],
          'confirm':['确认','Confirm'],
          'cancel':['取消','Cancel']}
flag=0

window = pg.Window('GUI',layout_ch)
while True:
    event, values = window.read()
    if event == 'None':
        break
    if event == pg.WIN_CLOSED:
        break
    if event == 'English':
        flag = 1
        for k,v in en_dic.items():
            window[k].update(en_dic[k][1])
    if event == '中文':
        flag = 0
        for k,v in en_dic.items():
            window[k].update(en_dic[k][0])
        
    if event == 'cancel':
        break
    if event == 'confirm':
        
        '''-----------window[key].update 的演示代码----------'''
        window['name_input'].update(      # update 输入框
                                value='qpn',
                                disabled=True,  # 无法更改输入内容
                                select=True)   # 输入框内容被选中
        '''---------------------------------------------------'''
    
window.close()

在这里插入图片描述

  • 输入文本框的 update 详细方法参数如下
pg.In.update(
    self,
    value=None,
    disabled=None,
    select=None,
    visible=None,
    text_color=None,
    background_color=None,
    move_cursor_to='end',    # 光标移动到何处
    password_char=None,
    paste=None,
)

小练习

在这里插入图片描述

def check(user_pass_dict,k,v):
    if k in user_pass_dict.keys():
        return user_pass_dict[k] == v
layout = [[pg.T('用户名',key='username'),pg.In('请输入您的用户名',key='input_user')]
         ,[pg.T('密码',key='password'),pg.In(
                                             password_char='*'
                                           ,key='input_pass')]
         ,[pg.B('确认',key='confirm'),pg.B('取消',key='cancel')]]

user_pass_dict = {'qpn':'123456'}

window = pg.Window('GUI',layout)

while True:
    event, values = window.read()
    
    if event == None or event == pg.WIN_CLOSED:
        break
    if event == 'confirm':
        # window[key] 返回一个对象,通过 get 方法得到字符串
#         key = window['input_user'].get()  
#         value = window['input_pass'].get()
#         bool_ = check(user_pass_dict,key,value)
        
        # 或者采用下面的写法;直接从 values 中获得所有的输入内容
        key = values['input_user']
        value = values['input_pass']
        bool_ = check(user_pass_dict,key,value)
        if bool_:
            pg.Popup('输入正确')
        else:
            pg.Popup('输入错误')
        
window.close()


        

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值