黄桃图库htx3,合同条款号是什么

牵着乌龟去散步 百科 66 0
Python学习笔记 | 使用PySimpleGUI模块开发图形用户界面(完整)

一、用户界面及图形用户界面库简介

1、用户界面简介

用户界面分为命令行用户界面和图形用户界面,是人机交互的重要手段。

  • 命令行用户界面:Command line User Interface(简称CUI),一般不支持鼠标,需要通过键盘输入指令,例如Windows系统的终端命令窗口、Python的运行和控制台窗口等。
  • 图形用户界面:Graphical User Interface(简称GUI), 允许用户使用鼠标和键盘点击选择图标和菜单项,来完成启动程序、执行命令和操作文件等日常事务,例如Windows系统界面。

很显然,图形用户界面要比命令行用户界面更直观、操作更便捷,所以开发完整的Python项目必须要设计一个功能完备并且漂亮的图形界面。

2、常用图形用户界面库简介

Python中常用的图形用户界面库有Thinker、PyQt、PySide2、WxPython和PySimpleGUI等,各具特色,下面简单介绍一下。

  • Thinker:Python官方自带的图形界面库
    优点:不需要安装,导入就可以使用;语法结构简单,易于掌握。
    缺点:没有界面设计器概念,所有控件的尺寸和位置调整都需要使用语句重复罗列,代码冗长,尤其不利于后期调整及维护。
  • PyQt:第三方公司开发的图形界面库
    优点:拥有QT设计器,可以通过可视化方式创建界面,拖拉控件即可完成界面设计。
    缺点:PyQt不是Python官方开发的,因此商业化应用受到一定限制,必须遵守开源协议即GPLv3许可证。简单的说就是项目交付给甲方时需要附带源代码,它的替代产品是PySide2。二者功能和语法几乎相同,但是PySide2是Python官方开发的,因此使用时不受限制。另外,PyQt设计界面生成的代码量比较大。
  • WxPython:采用c++编写的第三方库,也是主流图形用户界面库之一。
  • PySimpleGUI:封装了多个图形界面库的模块,功能强大,使用前需要安装。
    优点:PySimpleGUI体系封装了Thinker、Qt、WxPython和Remi,因此可以获得所有的控件元素,例如按钮、弹窗、滑块和下拉菜单等;在布局设计上,采用了更简单更人性化的 *** ,代码量非常少,易于后期维护;另外,PySimpleGUI使用了比较宽松的公共许可证——LGPL 3。

二、PySimpleGUI模块基本应用

1、基本步骤

  • 导入库:import PySimpleGUI as sg,简写sg是约定成俗的写法
  • 定义布局layout:layout是一个二维列表,外层列表里面包含多个内层列表,每个内层列表就是图形用户界面上的一行,包含这一行的所有控件定义
  • 创建窗口对象:使用PySimpleGUI的Window类创建一个窗口对象,参数包括窗口标题、布局layout等
  • 事件循环:利用while True进行无限循环,避免窗口一闪即关,同时反复读取窗口对象的事件和数据,然后进行判断处理
  • 关闭窗口对象:使用close *** 变比窗口对象,释放资源

模版代码如下:

# 导入库import PySimpleGUI as sg# 定义布局layout = <    ,  # 窗口之一行只有一个文本框,文本框语句可以简写成sg.T    ,  # 第二行有一个文本框和一个文本输入框,文本输入框语句可以简写成sg.In    ,  # 第三行同上,文本输入框语句可以有默认值      # 第四行有两个按钮,按钮语句可以简写成sg.B># 创建窗口对象,窗口标题是“图形窗口模版”,把布局列表layout传进去window = sg.Window('图形窗口模版', layout)# 主程序体,事件循环while True:  	# 循环读窗口,把发生的事件和输入的数据赋值给event和values    # values是一个字典,默认key是从0开始的数字序列    event, values = window.read()    # 判断确定按钮事件,输出文本输入框的内容    if event == '确定':        print(values)    # 判断窗口关闭按钮事件,退出循环。    # 窗口关闭事件的检测是必须要有的,否则就是点击窗口上的关闭按钮也不起作用。    # 如果用鼠标点击窗口的关闭按钮,事件就是None    if event  == None:        break# 关闭窗口对象window.close()

注意:所有控件都是调用的类,因此首字母都是大写的,例如sg.Text,窗口对象同样。

运行结果:

2、相关内容扩展

# 导入库import PySimpleGUI as sg# 定义布局layout = <    # enable_events参数是设置是否允许该组件产生事件    # 参数key是组件的关键字,设置key后,在取窗口事件和数据时就可以写成event==key值和values的形式    # 设置key,看着更直观,不容易出错。另外如果窗口组件过多,再用索引值取窗口数据内容就不方便记忆    ,    ,  # key值'-In_Name-'是约定成俗的写法,有助于区分,一般单词之一个字母大写    ,    ,    ># 创建窗口对象window = sg.Window('图形窗口模版', layout)# 主程序体,循环while True:    event, values = window.read()    # 由于“请输入学生信息”文本框参数enable_events=True,所以单击后就会产生事件		# 这里使用layout里定义的key来识别更方便    if event == '-Msg-':        sg.popup('请输入学生信息')  # 弹窗信息    # 确定按钮事件,弹窗输出文本输入框的内容    # 读取窗口得到的返回值values是一个字典,默认要这样取值:values<0>、values<1>……    # 如果窗口组件太多,用序号取值很不直观,可以使用在layout里定义的key来取值    if event == '确定':        sg.popup('学生姓名是:', values<'-In_Name-'>)    # 事件以XX开头    if event.startswith('功能'):        sg.popup('您点击了功能**按钮!')    # 事件以XX结尾    if event.endswith('内容'):        sg.popup('您点击了**内容按钮!')    # 判断窗口关闭和点击取消按钮事件,退出循环    if event in (None, '取消'):  # 也可以写成(sg.WIN_CLOSED, '取消')        break# 关闭窗口对象window.close()

3、Window类属性

Window(   title,   # 窗口标题设定    layout=None,    # 布局设定    location=(None, None),    # 默认窗口出现的位置    size=(None, None),    # 窗口宽高设定    element_padding=None,    # 元素间间隔设定    button_color=None,    # 按钮元素颜色设定(文本颜色,背景颜色)    font=None,    #(字体名称,字体大小)    background_color=None,    # 背景颜色设定    auto_close=False,    # 界面自动关闭设定    auto_close_duration=3,    # 默认为3秒,自动关闭前界面持续打开时间    no_titlebar=False,    # 界面无标题栏设定    grab_anywhere=False,    # 拖拽窗口设定。    keep_on_top=False,    # 如果为True,界面保持在屏幕的最前方    resizable=False,    # 如果为True,界面生成后可以调整大小    disable_close=False,    # 如果为True,窗口关闭按钮将不起作用    disable_minimize=False,    # 如果为True,窗口最小化按钮将不起作用    right_click_menu=None,    # 右击调出菜单    transparent_color=None,    # 界面透明设定 =sg.theme_background_color()    element_justification="left",    # 元素对齐方式设定。有效值 left,right,center      )

4、自定义主题

PySimpleGUI模块自带了上百套主题,主题里预定义了窗口背景颜色、字体颜色、组件边框效果等等,可以使用相应语句预览主题和打印有效主题名称列表。

  • 预览主题

输入如下代码:

import PySimpleGUI as sgsg.theme_previewer()

运行效果如下图:

PySimpleGUI模块预定义主题

默认主题是:Dark Blue 3,即深蓝 3。

  • 获取有效主题名称

上面输出的主题预览图里的主题并不全,并且有些还是无效的,在使用时可以先输出有效主题列表,然后通过复制粘贴就可以很方便的引用了。代码如下:

import PySimpleGUI as sgprint(sg.theme_list())输出结果:<'Black', 'BlueMono', 'BluePurple', 'BrightColors', 'BrownBlue', 'Dark', 'Dark2', ……>注:因为列表内容太多,所以这里用省略号代替。
  • 设置主题

格式:sg.theme(主题名称),演示代码如下:

import PySimpleGUI as sgsg.theme('Green')  # 设置主题为'Green'layout = <    ,    ,    ,    >window = sg.Window('自定义主题', layout)while True:    event, values = window.read()    if event is None:        breakwindow.close()

运行效果如下图:

【技巧】如果设置主题语句的参数为空字符串,即sg.theme(''),则会随机设置主题,每次运行程序主题都不一样,并且在pycharm的运行窗口里还会显示有效主题列表和当前正在使用的主题名称。反复运行程序,发现哪个主题比较相中,就可以在运行窗口里复制粘贴正在使用的主题名称。

运行窗口里的内容如下:(最下面一行后面的DarkTeal11就是当前使用的主题名称)

** Warning -  Theme is not a valid theme. Change your theme call. **valid values are <'Black', 'BlueMono', 'BluePurple', 'BrightColors',……>Instead, please enjoy a random Theme named DarkTeal11
  • 修改预定义主题的局部设置

假设我们相中了一个主题的整体效果,但是对局部设置不太满意,例如字体颜色,那么使用相应语句就可以针对部分设置进行更改。

首先,看一下一个主题包含的内容和相应的值,代码如下:

 'LightGreen3': {'BACKGROUND': '#A8C1B4',               'TEXT': 'black',               'INPUT': '#DDE0DE',               'SCROLL': '#E3E3E3',               'TEXT_INPUT': 'black',               'BUTTON': ('white', '#6D9F85'),               'PROGRESS': DEFAULT_PROGRESS_BAR_COLOR,               'BORDER': 1,               'SLIDER_DEPTH': 0,               'PROGRESS_DEPTH': 0}

以上是一个主题所包含的所有元素及设置,对应的修改这些设置的 *** 如下:

theme_background_colortheme_border_widththeme_button_colortheme_element_background_colortheme_element_text_colortheme_input_background_colortheme_input_text_colortheme_progress_bar_border_widththeme_progress_bar_colortheme_slider_border_widththeme_slider_colortheme_text_color

这些 *** 在pycharm里输入语句sg.theme_时就会自动提示,然后设置好相应的值就可以了。假设我对按钮的文字颜色white不满意,现在想修改成黑 *** lack,那么修改语句如下:

sg.theme('LightGreen3') print(sg.theme_button_color())sg.theme_button_color(('black','#6D9F85'))

注:首先设置主题,然后打印输出按钮的颜色,为的是取得按钮的背景颜色,最后修改按钮的文字颜色为black,把背景颜色复制粘贴过来。注意,修改颜色语句的参数是一个元组!

5、自动批量创建组件

对于一些特征相同、数量较多的组件,可以使用列表推导式的方式来自动批量创建,下面分三种形式演示:

黄桃图库htx3,合同条款号是什么-第1张图片-

  • 横向批量创建按钮组件
import PySimpleGUI as sglayout = <>window = sg.Window('自动批量创建组件', layout)while True:    event, values = window.read()    if event is None:        breakwindow.close()

运行效果:

  • 纵向批量创建按钮组件
layout = < for i in '1234567890'>

注意内层方括号的位置,运行效果:

  • 仿计算器样式创建按钮组件
import PySimpleGUI as sgsg.theme('LightYellow')# 自定义函数,返回带有格式设定的按钮元素,修改这里的参数,所有按钮就都随着改变def cbtn(text):    return sg.B(text, pad=(0, 0), size=(4, 2), font=('宋体', 18))# 定义布局,利用列表推导式配合自定义按钮函数,自动批量创建按钮layout = <    ,    ,    ,    ,>window = sg.Window('批量创建按钮', layout, keep_on_top=True)while True:    event, values = window.read()    print(event)    if event is None:        breakwindow.close()

运行效果:


三、核心组件介绍

图形窗口核心组件的属性很多,但是绝大部分都是共通的,因此这里以文本框为基础进行详细介绍。

1、单行文本框Text

格式:sg.Text(参数),可以简写成sg.T(参数)

  • 详细属性设置(组件都有很多通用属性,设置 *** 是一样的。这里以单行文本框为例,对所有属性进行详细介绍,后面将不再介绍通用属性,只介绍组件的特殊独有属性)
Text(    text="",                              # str:要显示的文本。可以包含\n以实现多行。    key=None,                             # :                # 元素唯一标识符,                 # 书写规范 key='-NMAE-'。用于元素的定位。    size=(None, None),                    # (int, int): 元素宽度,行高    font=None,                  # 设定字体的名称,大小                # font='宋体'                # font=('宋体',int) or font=<'宋体',int>    auto_size_text=None,                  # bool: 元素根据文本自动调节大小    enable_events=False,                  # bool: 事件属性,设定为True时,点击文本发生事件。    relief=None,                          # 浮雕设计 'raised','sunken','flat','ridge','solid','groove'    border_width=None,                    # 设定relief时,用来设定边界宽度    text_color=None,                      # 文本颜色    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=None,                 # 右击调出菜单  List,str>>>                # 设定后,右击此元素可以调出菜单。    grab=False,                            # bool:如果为真,点此元素可以移动拖拽窗口    tooltip=None,                          # str:悬浮文本 ,当光标置于该元素上方,会显示设定的文本。    visible=True                           # bool: 元素可见状态    )
  • Update ***

Update *** 用于在程序中更新文本框设置
格式:window.update() 或 window.Update()

可用于更新的属性如下:

update(    value=None,            # str 更新文本    background_color=None,            # str 更新文本背景颜色    text_color=None,            # str 更新文本颜色    font=None,            # 更新字体的名称或者大小    visible=None            # 更新元素的可见状态    )
  • 完整设置实例
import PySimpleGUI as sg# 定义文本框需要显示的文本txt = '''今年以来,面对复杂严峻的国内外形势和多重超预期因素冲击,中国经济顶住压力,前三季度国内生产总值(GDP)同比增长3%,在上半年同比增长2.5%的基础上,持续巩固回升态势。'''# 定义右键菜单内容r_menu = <'menu', <'红色文字', '绿色文字', '蓝色文字', '背景颜色', <'白色背景', '黄色背景', '黑色背景'>>># 定义布局layout = <<    sg.Text(        text=txt,        key='-TXT-',        size=(47, 3),        font=('微软雅黑', 12),        auto_size_text=False,        enable_events=False,        relief='raised',        border_width=10,        text_color='blue',        background_color='white',        justification='left',        pad=((4, 4), (8, 8)),        right_click_menu=r_menu,        grab=True,        tooltip='这是文本框!!!',        visible=True)>,    >window = sg.Window('自动批量创建组件', layout)while True:    event, values = window.read()    # 更新文字颜色    if event == '红色文字':        window<'-TXT-'>.update(text_color='red')    if event == '绿色文字':        window<'-TXT-'>.update(text_color='green')    if event == '蓝色文字':        window<'-TXT-'>.update(text_color='blue')    # 更新背景颜色    if event == '白色背景':        window<'-TXT-'>.update(background_color='white')    if event == '黄色背景':        window<'-TXT-'>.update(background_color='yellow')    if event == '黑色背景':        window<'-TXT-'>.update(background_color='black')    if event is None:        breakwindow.close()

运行效果:

视频加载中...


PySimpleGUI模块介绍到此全部完毕,篇幅太长了,但是为了知识点的连续性,还是都放在了一个篇幅里。如有不到之处,敬请教诲。

标签: 黄桃 条款 图库 合同 什么

抱歉,评论功能暂时关闭!