使用PySimpleGUI在Python中创建用户界面

目录

介绍

背景

使用代码

布局

事件处理

兴趣点


 

介绍

PySimpleGUI是一个Python包,可用于使用最简单的代码开发用户界面。尽管很简单,但它可以用来创建复杂而复杂的用户界面。任何程序员,即使他是Python新手,也可以PySimpleGUI在几分钟内轻松学习并开始创建具有漂亮用户界面的Python应用程序。

背景

PySimpleGUI目前支持4GUI框架:

  1. PySimpleGUI
  2. PySimpleGUIQt
  3. PySimpleGUIWx
  4. PySimpleGUIWeb

只需很少的更改即可将GUI从一个框架移植到另一个框架。某些功能可能由一个框架支持,但其他框架不支持,但总的来说,从一个框架移植到另一个框架很容易,只需对代码进行最少的更改。可以使用import语句指定要使用的框架。例如,使用PySimpleGUI,我们可以写import PySimpleGUI as sg和使用PySimpleGUIQt,我们可以写import PySimpleGUIQt as sg和使用PySimpleGUIWeb,我们可以写import PySimpleGUIWeb as sg

使用代码

和其他包一样,PySimpleGUI可以使用如下pip命令安装:

pip install pysimplegui --user

要安装PySimpleGUIWeb,可以使用以下命令:

pip install pysimpleguiweb --user

布局

PySimpleGUI使用列表列表定义布局。主列表中的每个列表定义一行。每行由呈现在单行上的用户界面元素组成。

下面是可以在PySimpleGUI中创建的一些常见的用户界面元素。

  • sg.Text: 渲染常量文本
  • sg.InputText:在运行时接受输入
  • sg.Checkbox:显示复选框
  • sg.Radio:显示单选按钮
  • sg.Combo:将项目列表显示为组合框,其中只能选择一个元素
  • sg.Listbox:将项目列表显示为列表框。设置select_mode="multiple"属性允许选择多个元素

例如,以下代码可用于呈现典型的用户界面:

layout = [
                [sg.Text("Select a theme: ",size=(15,1)),
                sg.Combo(sg.theme_list(),key="t",default_value="BlueMono",size=(10,1))],
                [sg.Text("Enter your name: ",size=(15,1)),
                sg.InputText(key="n",size=(10,1))],
                [sg.Checkbox("Capitalize",key="c",size=(15,1))],
                [sg.Text("Choose your gender: ",size=(15,1)),
                sg.Radio("Male","g",True,key="g1"),
                sg.Radio("Female","g",key="g2")],
                [sg.Text("Choose your qualification: ",size=(15,1)),
                sg.Combo(qualifications_list,key="q",default_value="Graduate",size=(15,3))],
                [sg.Text("Choose your hobbies: ",size=(15,1)),
                sg.Listbox(hobbies_list,key="h",select_mode="multiple",size=(15,3))],
                [sg.Button("Show",size=(15,1)),sg.Button("Reset",size=(15,1))]
             ]
window = sg.Window("Controls",layout)

上述布局中的第一行包含一个组合框,其中包含使用该sg.theme_list()函数获得的所有可用主题。其他行定义其他用户界面元素。sg.Window用于创建标题为控件并具有指定布局的窗口。其输出如下:

事件处理

需要一个事件循环来处理事件并读取在运行时输入的输入。可以按如下方式创建事件循环:

while True:
        event,values = window.read()
        if event == sg.WINDOW_CLOSED:
           break
        if event == "Show":
           name = values["n"].upper() if values["c"] else values["n"]
           gender = "Male" if values["g1"] else "Female"
           qualification = values["q"]
           hobbies = ""
           for h in values["h"]:
                hobbies = hobbies + h + ","
           hobbies = hobbies.rstrip(",")
           details = "Name: " + name + "\n"
           details = details + "Gender: " + gender + "\n"
           details = details + "Qualification: " + qualification + "\n"
           details = details + "Hobbies: " + hobbies + "\n"
           sg.theme(values["t"])
           sg.popup(details,title="Details")
        if event == "Reset":
           window["n"].update("")
           window["c"].update(False)
           window["g1"].update(True)
           window["q"].update("Graduate")
           window["h"].update(hobbies_list)
window.close()

上述代码中,通过该window.read()函数获取了按钮点击或窗口关闭事件的信息和输入的数据。如果单击窗口关闭按钮,则触发sg.WINDOW_CLOSED事件,这会导致控件跳出事件循环并使用该close()函数关闭窗口。如果单击Show按钮,则会触发Show事件,其中使用values字典收集在表单上输入的所有数据并使用该popup()函数显示在弹出窗口中。如果单击重置按钮,则会触发Reset事件,其中所有控件都使用该update()函数重置为其默认值。在"Show"事件中,使用sg.theme()函数应用当前选定的主题。

Themes:主题可以在PySimpleGUI中使用,以使用尽可能短的代码显示丰富多彩的和更漂亮的窗口。以下代码行创建了一个包含所有可用主题的组合框。

sg.Combo(sg.theme_list(),key="t",default_value="BlueMono",size=(10,1))

要从组合框中应用选定的主题,可以使用以下代码。

sg.theme(values["t"])

可以使用以下sg.theme_previewer()函数预览所有可用的主题:

import PySimpleGUI as sg
sg.theme_previewer()

上面的代码产生以下输出:

兴趣点

希望以上讨论对读者有所帮助,并引导更多的程序员使用PySimpleGUI

https://www.codeproject.com/Articles/5315989/Creating-User-Interfaces-in-Python-using-PySimpleG

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我们一步步来创建一个简单的ATM程序。首先,我们需要安装`pysimplegui`库,可以在命令行使用以下命令进行安装: ``` pip install pysimplegui ``` 然后,我们可以编写以下代码来创建ATM程序: ```python import PySimpleGUI as sg # 定义ATM界面 def create_atm_layout(): layout = [ [sg.Text('欢迎使用ATM机', size=(20, 1), font=('Helvetica', 20), text_color='blue')], [sg.Text('请输入取款金额:'), sg.InputText(key='amount')], [sg.Button('确认'), sg.Button('取消')] ] return layout # 定义ATM程序 def run_atm(): # 创建ATM界面 layout = create_atm_layout() window = sg.Window('ATM', layout) while True: event, values = window.read() # 处理事件 if event == sg.WINDOW_CLOSED or event == '取消': break elif event == '确认': # 取款 amount = values['amount'] if amount.isdigit(): amount = int(amount) if amount % 100 == 0: sg.popup(f'已取出{amount}元') break else: sg.popup('取款金额必须是100的倍数') else: sg.popup('请输入正确的数字') # 关闭窗口 window.close() # 运行ATM程序 run_atm() ``` 在这个程序,我们使用了`PySimpleGUI`库来创建ATM界面。我们定义了`create_atm_layout()`函数来创建ATM界面的布局。然后,我们使用`sg.Window()`函数创建了一个名为`ATM`的窗口,并将布局传递给它。 在`run_atm()`函数,我们使用一个无限循环来处理ATM界面的事件。我们使用`window.read()`函数获取事件和值,并根据事件类型进行处理。如果用户单击了`确认`按钮,则我们会检查输入的取款金额是否是100的倍数。如果是,我们会显示一个弹出窗口来确认取款。否则,我们会显示一个弹出窗口来通知用户取款金额必须是100的倍数。 最后,我们关闭ATM窗口并退出程序。 希望这个例子能帮助你了解如何使用`pysimplegui`创建GUI应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值