ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第1章 自定义界面-基本代码

2021-09-16 16:03:31  阅读:141  来源: 互联网

标签:界面 自定义 Text 代码 values key layout sg event


1.  创建一个最基本的界面

1.1  弹窗

import PySimpleGUI as sg

sg.Popup("一个简单的弹窗!")   # 单行文本!


   sg.Popup("第1行内容!","第2行内容!","第3行内容!") # 多行文本!

# text = '''  文本内容!    '''
# sg.Popup(text)   # 多行文本!

  效果如下:

1.2  基本框架---模板代码的组成

# 1)导入模块
import PySimpleGUI as sg

# 2)定义布局,确定行数
layout = [
    [sg.Text("请输入基本信息!")],
    [sg.Text("姓名"), sg.InputText()],
    [sg.Text("性别"), sg.InputText()],
    [sg.Text("电话号码"), sg.InputText()],
    [sg.Button("确认"), sg.Button("取消")],
]

# 3)创建窗口
window = sg.Window("测试窗口", layout)

# 4)事件循环
while True:
    event, values = window.read()  # 窗口的读取,有两个返回值(1.事件;2.值)
    # print(event,values)

    if event == None:  # 窗口关闭事件,设置一个出口跳出循环
        break

# 5)关闭窗口
window.close()

2.  主题

2.1  查看有效主题

import PySimpleGUI as sg

sg.theme_previewer()
print(sg.theme_list()) # 获取有效主题名称

2.2  选择主题

import PySimpleGUI as sg

sg.theme("主题名称")
sg.theme("")   # 随机主题

2.3  修改主题部分设置

import PySimpleGUI as sg

sg.theme("LightGreen3")
sg.theme_button_color("black","#6df85")   # 修改LightGreen3的按钮颜色

3.  事件的介绍

3.1  窗口关闭事件

# 第1种:
    if event == None:  # 窗口关闭事件
        break

# 第2种:
    if event == sg.WIN_CLOSED:    # 窗口关闭事件
        break

3.2  按钮点击事件

    if event =="确认":    # 点击确认按钮后,判断事件是否发生
        print("确认")     # 事件发生时要处理的任务
        sg.Popup("执行确认任务!")

3.2.1  判断事件是否发生的几种方式

# 第1种
    if event =="exit":
        sg.Popup("你点击了exit按钮!")
        break

# 第2种
    if event in("exit",None):        # 事件为exit或None
        sg.Popup("你点击了exit或窗口关闭!")
        break

# 第3种
    if event.startswith("exit"):     # 事件的前4个字母为exit
        sg.Popup("你点击了exit按钮!")
        break

# 第4种
    if event.endswith("exit"):      # 事件的后4个字母为exit
        sg.Popup("你点击了exit按钮!")
        break

 3.2.2  按钮事件-案例

# 1)导入模块
import PySimpleGUI as sg

# 2)定义布局,确定行数
layout = [
    [sg.Text("请输入基本信息!")],
    [sg.Text("姓名"),sg.InputText(enable_events=True,key="-XM-")],
    [sg.Text("性别"),sg.InputText(enable_events=True,key="-XB-")],
    [sg.Text("电话号码"),sg.InputText(enable_events=True,key="-DH-")],
    [sg.Button("确认"),sg.Button("取消")],
]

# 3)创建窗口
window = sg.Window("测试窗口",layout)

# 4)事件循环
while True:
    event,values = window.read()
    # print(event,values)

    if event == "确认":
        sg.Popup("你提交的信息如下!",
                 "姓名:"+values["-XM-"],
                 "性别:" + values["-XB-"],
                 "电话号码:" + values["-DH-"],keep_on_top=True
                 )

    if event == None:
        break

# 5)关闭窗口
window.close()

  效果如下:

 

 

3.3  其他事件(文本元素、输入框、下拉菜单)

  1)像文本元素、输入框、下拉菜单等事件默认属性是关闭的,当手动设置他们的事件属性(enable_event=True)为真时,他们也将具备事件属性。

  2)未设置key值时,事件默认的event为第一个元素。

layout = [[sg.Text("OK",enable_events=True)]]    # 打开时间属性,点击文本时会触发弹窗  
...

if event == "OK":
    sg.Popup("文本元素事件为ok,即弹窗!")

  3)设置key值时,事件的event为key值。

layout = [[sg.Text("OK",enable_events=True,key="-WB-")]]    
...

if event == "OK":
    sg.Popup("不会弹窗的哦!")

if event == "-WB-":
    sg.Popup("弹窗!")

4.  值的介绍

  窗口读取返回值,值的两种获取方式

  • 通过列表索引获取返回值-值。
  • 通过字典的键获取返回值-值。
# 第1种:通过列表的索引获取返回值。默认是通过列表获取。values[位置序号]
    if event =="确认":
        print(values[1])       # 打印第2行元素的值

# 第2种:通过字典的键获取返回值。
    # 当给元素设定唯一标识符key,则该元素无法通过列表索引,只能通过字典key进行索引。values[key]
    layout = [
        [sg.Text("请输入基本信息!")],
        [sg.Text("姓名"), sg.InputText(key="-XM-")]]   # key建议首字母为大写,“ - ”不能少。
while True:
    event, values = window.read()  
    
    if event == "确认":
        print(values["-XM-"])  # 打印姓名的值

5.  自定义窗口

5.1  for循环简介---它可以遍历任何序列的项目

str1 = "abcd1234"
list1 =["乔治","佩琪","佩德罗"]

# for i in str1:
for i in list1:
    print(i)

>>乔治
>>佩琪
>>佩德罗

5.2  配合使用for循环,自定义窗口

# 1)导入模块
import PySimpleGUI as sg

# 2)定义布局,确定行数
str = "ABCD"
# 第1种: # 注意:有两个中括号的。
layout = [[sg.Text(i) for i in str]] # for循环前面是 () 时,从左向右遍历。

# 第2种 # layout = [[sg.Text(j)] for j in str] # for循环前面是 [] 时,从上向下遍历。 # 3)创建窗口 window = sg.Window("测试窗口",layout) # 4)事件循环 while True: event, values = window.read() # print(event,values) if event == None: break # 5)关闭窗口 window.close()

  效果如下:

 

 5.3  布局和元素的组合方式

5.3.1  第一种布局方式

layout = [
    [sg.Text("请输入基本信息!")],
    [sg.Text("姓名"), sg.InputText(key="-XM-")],
    [sg.Text("性别"), sg.InputText()],
    [sg.Text("电话号码"), sg.InputText()],
    [sg.Button("确认"), sg.Button("取消")],
]
layout_a = [[sg.B("增加按钮")]]
layout = layout + layout_a

5.3.2  第二种布局方式

  元素间除了用“ ,” 隔开外,还可以用“ ] + [ ”替代。

layout = [
    [sg.Text("请输入基本信息!")],
    [sg.Text("姓名")]+[sg.InputText(key="-XM-")],
    [sg.Text("性别")]+[ sg.InputText()],
    [sg.Text("电话号码")]+[sg.InputText()],
    [sg.Button("确认")]+[ sg.Button("取消")],
]

标签:界面,自定义,Text,代码,values,key,layout,sg,event
来源: https://www.cnblogs.com/lovezhuzhu1314/p/15292243.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有