Python学习--PySimpleGUI

01简单的图形界面:

pip install PySimpleGUI

        安全工具包

 02简单的界面

layout[[],[],[]...]

        页面布局,内部由多个元祖组成,每一个元祖都是一个界面

PySimpleGUI.Text("需要显示的文本")/PySimpleGUI.T("需要显示的文本")

        进行文本输出

PySimpleGUI.InputText("文本框默认名称")/PySimpleGUI.In("文本框默认名称")

        进行输入文本框输出

PySimpleGUI.Button("按钮名称")

        进行按钮输出

layout = [
    [PySimpleGUI.Text("这是第一行数据")],
    [PySimpleGUI.Text("姓名"), PySimpleGUI.InputText("程序员王总")],
    [PySimpleGUI.Text("性别"), PySimpleGUI.InputText("男")],
    [PySimpleGUI.Text("国籍"), PySimpleGUI.InputText("中国")],
    [PySimpleGUI.Button("确定"), PySimpleGUI.Button("取消")]
]

PySimpleGUI.Windows("程序名称",程序布局)

        定义程序的布局,返回一个windows类

windows.read()

        读取窗口,返回两个值,一个是事件,一个是值

import PySimpleGUI
layout = [
    [PySimpleGUI.Text("这是第一行数据")],
    [PySimpleGUI.Text("姓名"), PySimpleGUI.InputText("程序员王总")],
    [PySimpleGUI.Text("性别"), PySimpleGUI.InputText("男")],
    [PySimpleGUI.Text("国籍"), PySimpleGUI.InputText("中国")],
    [PySimpleGUI.Button("确定"), PySimpleGUI.Button("取消")]
]
windows = PySimpleGUI.Window("我的程序", layout)
while True:
    event, values = windows.read()
    if event is None:
        windows.close()
    break

03窗口关闭事件

即界面右上角的x

编写方法:

    1)if event == None:(判断是否点击x)

            需要执行的操作

     2)if event == PySimpleGUI.WIN_CLOSED:

            需要执行的操作

注意:

        必须定义窗口关闭事件,否则会消耗100%的CPU

04按钮点击事件:

编写方法:

1)if event == "对应按钮名称":

        """对应名称按钮被触发时的操作"""

        PySimpleGUI.Popup("弹窗提示,进行按钮操作后的提示文字")

2)if event in ("按钮名称1","按钮名称2"):

        """对应多个按钮名称触发时的操作,即多按钮操作一个事件"""

        PySimpleGUI.Popup("弹窗提示,进行按钮操作后的提示文字")

3)if event.startswith("对应按钮名称"):

        """主要以括号内名称开头的按钮,都执行此事件"""

        PySimpleGUI.Popup("弹窗提示,进行按钮操作后的提示文字")

4)if event.endswith("对应按钮名称"):

        """只要以括号内名称结尾的按钮,都执行此事件"""

        PySimpleGUI.Popup("弹窗提示,进行按钮操作后的提示文字")

5)像文本元素,输入框,下拉菜单等事件属性默认是关闭的。如果需要,可以手动设置他们的事件属性,enable_event=True为真时,他们也将具有事件属性

        以文本元素为例:

        layout[...

                      PySimpleGUI.Text("OK",enable_events=True)  

                        ...]

        此时该文本文件也会有触发事件

PySimpleGUI.Popup("文字"):其实就是一个小弹窗显示

 5)获取输入窗口的值

windows.read()

       现在通过该方法,可以读取到event,也能读取到values,那此values就是输入框内容所组成的列表,如果想要使用:

        1)可以通过索引的方式进行引用

                        注意,这里能进到列表中的数据是没有经过key定义的,进过key的值不会存

                        在!

import PySimpleGUI
layout = [
    [PySimpleGUI.Text("这是第一行数据")],
    [PySimpleGUI.Text("姓名"), PySimpleGUI.InputText("程序员王总")],
    [PySimpleGUI.Text("性别"), PySimpleGUI.InputText("男")],
    [PySimpleGUI.Text("国籍"), PySimpleGUI.InputText("中国")],
    [PySimpleGUI.Button("确定"), PySimpleGUI.Button("取消")]
]
windows = PySimpleGUI.Window("我的程序", layout)
while True:
    event, values = windows.read()
    if event == PySimpleGUI.WIN_CLOSED:
        windows.close()
        break
    if event == "确定":
        print(values[0])

292        2)通过字典的形式获取输入框的值

                        在定义输入框时,需要额外指定key以方便后续读取、

                        PySimpleGUI.InputText("输入框的默认值",key="指定key值")

        3)关于values和event以及事件触发enable_events

        values记录了所有元素的值,如果对应元素有事件发生,那对应元素的key的值就会被记录,即如果元素的enable_events设置为真,那么当操作对应元素时,就会返回对应元素的值到values的列表中

06主题

 主题theme包括:窗口的背景颜色,文本Text颜色,按钮的字体颜色和按钮颜色等等。

1)查看主题

        PySimpleGUI.theme_previewer()

2)获取主题名称列表

        PySimpleGUI.theme_list()

3)设置主题

        PySimpleGUI.theme("主题名称")

4)设置随机主题

        PySimpleGUI.theme("")

        随机主题,会提示你当前使用的主题名

print(PySimpleGUI.theme_list())
PySimpleGUI.theme("Dark")
PySimpleGUI.Popup("测试")

5)获取主题的部分设置

PySimpleGUI.theme_background_color()                    # 主题_背景_颜色
PySimpleGUI.theme_border_width()                        # 主题_边框_宽度
PySimpleGUI.theme_button_color()                        # 主题_按钮_颜色
PySimpleGUI.theme_element_background_color()            # 主题_元素_背景_颜色
PySimpleGUI.theme_text_color()                          # 主题_元素_文本_颜色
PySimpleGUI.theme_input_background_color()              # 主题_输入框_背景_颜色
PySimpleGUI.theme_input_text_color()                    # 主题_输入框_文本_颜色
PySimpleGUI.theme_progress_bar_border_width()           # 主题_进度_栏_边框_颜色
PySimpleGUI.theme_progress_bar_color()                  # 主题_进度_栏_颜色
PySimpleGUI.theme_slider_border_width()                 # 主题_滑块_边框_颜色
PySimpleGUI.theme_slider_color()                        # 主题_滑块_颜色
PySimpleGUI.theme_text_color()                          # 主题_文本_颜色
PySimpleGUI.theme_text_element_background_color()       # 主题_文本_元素_背景_颜色

6)修改主题的部分设置

可以先print对应主题,查看输入规范,然后根据规范进行赋值,例如

PySimpleGUI.theme("Dark")
PySimpleGUI.Popup("测试")
print(PySimpleGUI.theme_button_color())
PySimpleGUI.theme_button_color(("black", "#004F00"))
PySimpleGUI.Popup("测试之后的", "可以多一点")

07批量创建

利用for循环进行多种元素创建

1)layout[

                [PySimpleGUI.In()  for i in "ABCD"]

                ]

        以列表的形式就是在同一行

 2)layout[

                [[PySimpleGUI.In()] for i in ["12","34","56"]]

                ]

         以key的形式就是分行创建

08自定义布局

 上面布局时,用,进行多个元素的拼接,实际也可以使用+进行拼接但是需要加上[]

import PySimpleGUI
layout = [
    # [PySimpleGUI.Text("这是第一行数据")],
    # [PySimpleGUI.Text("姓名"), PySimpleGUI.InputText("程序员王总")],
    # [PySimpleGUI.Text("性别"), PySimpleGUI.InputText("男")],
    # [PySimpleGUI.Text("国籍"), PySimpleGUI.InputText("中国")],
    # [PySimpleGUI.Button("确定"), PySimpleGUI.Button("取消")]
    [PySimpleGUI.Text("这是第一行数据")],
    [PySimpleGUI.Text("姓名")]+[PySimpleGUI.InputText("程序员王总")]]+[
    [PySimpleGUI.Text("性别")]+[PySimpleGUI.InputText("男")]]+[
    [PySimpleGUI.Text("国籍"), PySimpleGUI.InputText("中国")],
    [PySimpleGUI.Button("确定"), PySimpleGUI.Button("取消")]
]
windows = PySimpleGUI.Window("我的程序", layout)
while True:
    event, values = windows.read()
    if event == PySimpleGUI.WIN_CLOSED:
        windows.close()
        break
    if event == "确定":
        print(values[0])

09文本元素的参数

 对应参数如下

    [PySimpleGUI.T(text,
                   key="-Text-",                # 元素唯一标识符,用于元素的定位
                   size=(None, None),           # 元素宽度,行高(int, int)
                   font=("宋体", 20),            # 设定文字字体,大小,font="宋体",font=("宋体", int) or font["宋体", int]
                   auto_size_text=True,         # 当设定值为True时,窗口自动适应文本大小
                   enable_events=False,         # bool: 事件属性,设定为True时,点击文本发生事件
                   relief="solid",              # 浮雕设计"raised", "sunken", "flat", "ridge", "solid", "groove"
                   border_width=20,             # 当设定relief时,用来设定对应效果的边界宽度
                   text_color=None,             # 文本颜色
                   background_color=None,       # 文本背景颜色
                   justification=None,          # 对齐方式: "left", "right", "center"
                   pad=None,                    # 元素间隔设定  记住左右上下((int, int), (int, int))当左右或上下值一样时(int, int)
                   right_click_menu=None,       # 右击可以调出菜单 list[list[Union[List[str],str]]]
                   grab=None,                   # 如果为真,点击此元素可以移动拖拽窗口
                   tooltip=None,                # str: 悬浮文本,当光标置于该元素上方,会显示设定的文本
                   visible=True)]               # bool: 元素可见状态
]

10文本元素的更新

 1) window[key].update()

 2) window[key].Update()

文本元素可以更新的属性:

windows[key].update(
        value=None,             # str更新文本(只更新文本可以智驾用字符串)
        background_color=None,  # 更新文本背景颜色
        text_color=None,        # 更新文本颜色
        font=None,              # 更新字体的名称或者大小                   
        visible=None            # 更新元素的可见状态
)
import PySimpleGUI as pg
layout = [
    [pg.B("中文", key="中文"), pg.B("English", key="English")],
    [pg.T("请输入基本信息!", key="A")],
    [pg.T("姓名", key="B", size=(4, 1)), pg.In()],
    [pg.T("性别", key="C", size=(4, 1)), pg.In()],
    [pg.T("国籍", key="D", size=(4, 1)), pg.In()],
    [pg.B("确认", key="E", size=(8, 1)), pg.B("取消", key="F", size=(8, 1))]
]
window = pg.Window("我的程序", layout)
while True:
    event, values = window.read()
    if event == pg.WIN_CLOSED:
        window.close()
        break
    if event == "English":
        window["A"].update("Please enter information")
        window["B"].update("Name")
        window["C"].update("Sex")
        window["D"].update("Nationality")
        window["E"].update("Confirm")
        window["F"].update("Cancel")
    if event == "中文":
        window["A"].update("请输入基本信息!")
        window["B"].update("姓名")
        window["C"].update("性别")
        window["D"].update("国籍")
        window["E"].update("确认")
        window["F"].update("取消")

 

11输入框元素的参数

 对应参数如下

    [PySimpleGUI.In(text,
                   key="-Text-",                # 元素唯一标识符,用于元素的定位
                   size=(None, None),           # 元素宽度,行高(int, int)
                   text_color=None,             # 输入框里的文本颜色
                   background_color=None,       # 输入框的颜色
                   justification=None,          # 对齐方式: "left", "right", "center"
                   disabled=None,               # 元素禁用,如果为True则禁用,无法输入任何值
                   disable_readonly_background_color=None,  # 元素禁用时的背景颜色设定
                   disable_readonly_text_color=None,        # 元素禁用时的文本颜色设定
                   password_char=""             # 密码字符,一般设置为*
                   font=("宋体", 20),            # 设定文字字体,大小,font="宋体",font=("宋体", int) or font["宋体", int]
                   border_width=20,             # 输入框边界线宽度设定
                   enable_events=False,         # bool: 输入框的事件属性,设定为True时,输入值会发生事件
                   do_not_clear=True,           # bool: 输入框内容不被清除,如果为False,一旦发生事件,该输入框内的值会被清楚        
                   focus=False,                # 设定焦点,如果为True,则光标显示在此输入框
                   pad=None,                    # 元素间隔设定  记住左右上下((int, int), (int, int))当左右或上下值一样时(int, int)
                   right_click_menu=None,       # 右击可以调出菜单 list[list[Union[List[str],str]]]
                   grab=None,                   # 如果为真,点击此元素可以移动拖拽窗口
                   tooltip=None,                # str: 悬浮文本,当光标置于该元素上方,会显示设定的文本
                   visible=True)]               # bool: 元素可见状态
]

 12单行输入框的更新方法

1)update的方法更新元素

         window[key].update()

         window[key].Update()

import PySimpleGUI as pg
layout = [
    [pg.B("中文", key="中文"), pg.B("English", key="English")],
    [pg.T("请输入基本信息!", key="A")],
    [pg.T("姓名", key="B", size=(4, 1)), pg.In("", key="xin")],
    [pg.T("性别", key="C", size=(4, 1)), pg.In()],
    [pg.T("国籍", key="D", size=(4, 1)), pg.In()],
    [pg.B("确认", key="E", size=(8, 1)), pg.B("取消", key="F", size=(8, 1))]
]
window = pg.Window("我的程序", layout)
while True:
    event, values = window.read()
    if event == pg.WIN_CLOSED:
        window.close()
        break
    if event == "E":
        window["xin"].Update(
                           value="123",
                           disabled=None,
                           select=None,
                           visible=None,
                           text_color="red",
                           background_color=None,
                           move_cursor_to="end"         # 光标移动到文本的最后
                           )

2)setFocus的方法,设置元素焦点

         window[key].setFocus()

         window[key].set_focus()

import PySimpleGUI as pg
layout = [
    [pg.B("中文", key="中文"), pg.B("English", key="English")],
    [pg.T("请输入基本信息!", key="A")],
    [pg.T("姓名", key="B", size=(4, 1)), pg.In("", key="xin")],
    [pg.T("性别", key="C", size=(4, 1)), pg.In()],
    [pg.T("国籍", key="D", size=(4, 1)), pg.In()],
    [pg.B("确认", key="E", size=(8, 1)), pg.B("取消", key="F", size=(8, 1))]
]
window = pg.Window("我的程序", layout)
while True:
    event, values = window.read()
    if event == pg.WIN_CLOSED:
        window.close()
        break
    if event == "E":
        window["xin"].SetTooltip("哈哈哈")

3)SetTooltip的方法,更新元素悬浮提示

         window[ky].SetTooltip()

         window[key].set_ftooltip()

13按键元素的设定及更新方法

 1)按键元素的参数

pg.Button(button_text="",
               Key=None,
               tooltip=None,            # 悬浮文本
               disabled=False,          # 元素禁用设定
               image_filename=None,     # 图片路径,按钮图片表示,和image_data二选一使用
               image_data=None,         # 图片base64格式,按钮用图片显示,和image_filename二选一使用
               image_size=(None, None),
               image_subsample=None,    # 图片大小设定,为2时,原图片的二分之一大小:2=1/2, 3=1/3, 4=1/4, etc
               border_width=None,       # 按钮边界线设定
               size=(None, None),
               auto_size=None,          # 按键上文本大小自动调节
               button_color=("", ""),   # 按键的颜色,前面是字体,后面是背景
               disabled_button_color=None,  # 按键禁用时显示的按钮颜色
               font=None,
               bind_return_key=False,       # 绑定回车键,如果设定为True,回车键会使此元素被点击
               focus=False,
               pad=None)
                ]

2)update的方法更新元素

         window[key].update()

         window[key].Update()

        可更新内容与其自有参数一致

3)获得base64格式文件的方法

import base64
f = open(r"文件路径", "rb")
res = f.read()
s = base64.b64encode(res)
f.close()

14列表元素的设定方法

 1)使用方式:

        PySimpleGUI.Listbox(list) / PySimpleGUI.LB(list)

 2)列表元素的参数

        [pg.Listbox(list_A, size=(80, 40),
                    default_values=None,                # 打开时默认选中的值或者列表
                    key=None,
                    select_mode=None,                   # 鼠标选择模式,有效值有4中:
                                                        # single, 单选,更换时点击选择
                                                        # multiple, 可以多选,逐一点击选择
                                                        # browse, 单选,鼠标按住也可以更换选择
                                                        # extended, 可以多选,鼠标按住也可以扩展选择
                    enable_events=False,                # 列表元素的事件属性,如果为True,点击时会返回key
                    bind_return_key=True,               # 绑定回车键,如果为True回车键按下时,相当于此元素被点击
                    disabled=False,
                    auto_size_text=True,
                    font=None,
                    no_scrollbar=False,                 # 如果为True,则没有滚动条
                    background_color="",
                    text_color="",
                    pad=None,
                    tooltip=None,                       # 悬浮文本
                    right_click_menu=None,              # 右击调出菜单
                    visible=True
                    )]

15列表元素的更新方法

 1)更新方法:

         window[key].update()

         window[key].Update()

  2)可更新的参数:

        wd["None"].update(
                            values=None,                # 元祖或者列表[1,2,]或(1,2,)
                            disabled=None,              # 更新元素后是否被禁用
                            set_to_index=None,          # 高亮显示设定的索引对应的列表值
                            scroll_to_index=None,       # 将设定的索引跳到要显示的第一行
                            select_mode=None,
                            visible=None
        )

16下拉菜单的书写方法

1)书写方式:

        PySimpleGUI.Comno() / PySimpleGUI.InputComno() / 

        PySimpleGUI.DropDown() / PySimpleGUI.Drop()

此方法与上述列表元素的最大区别在于,该方法可以输入(但是不能多选),而Listbox取得的值是存放在列表里面,但是Combo取得的值是对象本身

2)参数

        [pg.Drop(list_A,
                 size=(1, 2),
                 auto_size_text=True,
                 background_color="",
                 text_color="",
                 enable_events=False,
                 disabled=False,
                 pad=None,
                 tooltip=None,
                 readonly=False,        # 元素只读属性,只能选择不能输入内容
                 font=None,
                 visible=True
                 )]
]

 17下拉菜单的更新

1)更新方法:

         window[key].update()

         window[key].Update()

  2)可更新的参数:

        wd[A].update(value=None,            # 更新默认选中的选项
                     values=None,           # 更新显示的所有下拉菜单文本
                     set_to_index=None,     # 高亮显示设定的索引的文本
                     disabled=None,         # 更新元素的禁用状态
                     readonly=None,         # 更新元素的只读状态
                     font=None,
                     visible=None
                     )

 18选择菜单和旋转按键

1)选择菜单书写方法:

        PySimpleGUI.OptionMenu()

         此元素和设置了只读属性的ComboBox很像,只是没有font、enable_events事件属性

2)选择菜单的参数

        [pg.OptionMenu(list_A,
                       default_value=None,          # 默认文本
                       key=None,                    # 唯一标识符
                       size=(None, None),           # 元素的宽度和行高
                       disabled=False,
                       auto_size_text=False,
                       background_color="",
                       text_color="",
                       pad=None,
                       tooltip=None,
                       visible=True
                       )]
]

3)可更新属性

        wd["None"].update(value=None,
                          values=None,
                          disabled=None,
                          visible=None)

4)旋转按钮书写方法:

        PySimpleGUI.Spin()

5)旋转按钮的参数:

        可更新属性见上

        [pg.Spin(initial_value=None,                # 默认显示选项
                 key=None,
                 disabled=False,
                 size=(None, None),
                 auto_size_text=None,
                 font=None,
                 background_color="",
                 text_color="",
                 pad=None,
                 tooltip=None,
                 visible=True
                 )]

 19单选框元素

1)单选框元素的书写方法:

        PySimpleGUI.Radio("", group_id) / PySimpleGUI.R("", group_id)

        group_id的意思就是,单选框元素只能有一个选择,选择这个,另一个就非选择状态

2)更新方法:

        ---window[key].update()

        --window[key].ResetGroup() / window[key].reset_group()

                下面这个是在执行完单选操作后,重置选择为空

import PySimpleGUI as pg
dict_A = {"D": 1, "B": 2, "C": 3}
list_A = []
for i in dict_A:
    list_A.append(i)
layout = [
           [pg.Radio(i, group_id=1, key=i)for i in list_A],
            [pg.R("a", group_id=1)],
            [pg.B("确定", key="AAA")]
]
wd = PySimpleGUI.Window("GOOD", layout, grab_anywhere=True)
while True:
    event, values = wd.read()
    if event is None:
        wd.close()
        break
    if event == "AAA":
        wd["D"].ResetGroup()

同一个group_id的单选框,可以使用任意一个key对整个group进行重置操作

3)单选框属性,与其他基本一致,就多了一个group_id

4)单选框可更新的属性

        wd["D"].update(value=None,              # 为True是,此单选框被选中,同组其他更新为未选中、
                       text=None,               # str 更新显示在按钮旁边的文本
                       background_color="",
                       text_color="",
                       disabled=None,
                       visible=None
                       )

5)获取选择的内容

import PySimpleGUI as pg
dict_A = {"D": 1, "B": 2, "C": 3}
list_A = []
for i in dict_A:
    list_A.append(i)
layout = [
           [pg.Radio(i, group_id=1, key=i)for i in list_A],
            [pg.R("a", group_id=1, enable_events=True)],
            [pg.B("确定", key="AAA")]
]
wd = PySimpleGUI.Window("GOOD", layout, grab_anywhere=True)
while True:
    event, values = wd.read()
    if event is None:
        wd.close()
        break
    if event == "AAA":
        for key, value in values.items():
            if value is True:
                print(key)

 20复选框元素

1)复选框元素的书写方式:

        PySimpleGUI.Checkbox() / PySimpleGUI.CB()

        就是一个选择里有多个信息

2)复选框的更新方法:

        window[key].update()

3)复选框的属性:

           [pg.Checkbox(text="AA",          # 选框旁边的数字
                        key="AA",           
                        default=False,      # 是否默认选中
                        size=(None, None),
                        auto_size_text=True,
                        font=None,          # (str,int)字体类型和大小
                        background_color="",
                        text_color="",
                        enable_events=False,
                        pad=(None, None),
                        tooltip="",
                        visible=True)]
]

4)复选框可更新属性

        wd["AA"].update(value=None,         # 更新选中状态,如果为True则选中,为False则清空
                        text=None,
                        background_color="",
                        text_color="",
                        disabled=None,
                        visible=None
                        )

 21滑块元素

1)滑块元素的书写方法

        PySimpleGUI.Slider()

2)滑块元素的属性

           [pg.Slider(range=(None, None),       # 滑块的范围(最小值,最大值)
                      key=None,                 # 元素的唯一标识符
                      default_value=None,       # 滑块初始所处的位置
                      tick_interval=None,       # 刻度值标记
                      resolution=None,          # 滑块移动的最小单位
                      orientation=None,         # 方向设定,水平("h"/"horizontal")或者垂直("v"/"vertical")
                      disable_number_display=False, # 默认为false,如果为True,滑块旁的数字不显示
                      border_width=None,        # 边界线宽度
                      relief=None               # 浮雕设计,"raised"/"sunken"/"flat"/"ridge"/"solid/"groove"

                      )]

3)滑块元素的更新方法:

         window[key].update()

         window[key].Update()

4)滑块元素可更新的属性:

        wd["None"].update(value=None,
                          range=(None, None),
                          disabled=None,
                          visible=None
                          )

22图片元素

1)图片元素的书写方法:

        PySimpleGUI.Image(filename="图片路径")

        图片路径仅支持GIF和PNG

2)图片元素的属性

filename=None,                # 图片路径仅支持GIF和PNG
data=None,                    # base64编码格式的字符串图片
background_color=None,        # 背景颜色设定
size=(None, None),            # 图片的宽度和高度
Pad=None,                        
tooltip=None,
right_click_menu=None,
visible=True
enable_events=False

3)图片元素的更新方法:

         window[key].update()

         window[key].Update()

4)图片元素可更新属性

filename=None,
data=None,
size=(None, None),
visible=None

5)图片元素的动图更新方法

        window[key].update_animation(source,time_between_frames) 

        window[key].UpdateAnimation(source,time_between_frames)

其中,source就是包含动画的gif文件,或者base64编码的字符串,time_between_frames表示显示帧之间要等待的毫秒数

23列元素

1) 列元素的书写方法:

        PySimpleGUI.Column() / PySimpleGUI.Col()

        列元素是一个容器元素,用于在窗口的布局中创建布局

layoutL = [
            [pg.T("左边")],
            [pg.InputText()]
]
layoutR = [
            [pg.B("确认", size=(80,40))]
]
layout = [[pg.Col(layoutL), pg.Col(layoutR)]]
wd = PySimpleGUI.Window("GOOD", layout, grab_anywhere=True)
while True:
    event, values = wd.read()
    if event is None:
        wd.close()
        break

2)列元素的参数

layout = [[pg.Col(layoutL,
                  background_color="",
                  size=None,
                  pad=None,
                  scrollable=True,              # 如果True,则滚动条将添加到该列
                  vertical_scroll_only=True,    # 如果为True,则不会显示水平滚动条
                  right_click_menu=None,
                  key=None,
                  visible=True,
                  justification="left",         # 为列本身对齐方式
                  element_justification="Center",   # 列内所有元素的对齐方式,"left","center","right"
                  vertical_alignment=None,      # 垂直对齐方式,"top","bottom","center"
                  grab=True,
                  expand_x=None,                # 如果为True.则列将自动沿x方向扩展以填充可用空间
                  expand_y=True,                # 如果为True,则列将自动沿y方向扩展以填充可用空间
                  ), pg.Col(layoutR)]]

 24框架元素

1)框架元素的书写方式

        PySimpleGUI.Frame(title="",layout=layouya)

2)框架元素的参数

layout = [[pg.Frame(title="",
                    layout=None,            # 框架元素内的布局
                    background_color="",
                    title_color="",
                    title_location=None,    # 标题所处位置:12个有效值 n(北)、nw(北西)、ne(北东)、
                                                                # e(东)、en(东北)、es(东南)
                                                                # s(南)、se(南东)、sw(南西)
                                                                # w(西)、ws(西南)、wn(西北)
                    relief="",              # 浮雕设计,"raised"、"sunken"、"flat"、"groove"、"ridge"、"solid"
                    size=(None, None),
                    font=None,
                    pad=None,
                    border_width=10,
                    tooltip="",
                    right_click_menu=None,
                    visible=True,
                    element_justification="",  # 框架内元素的对齐方式"left"/"right"/"center"
                    vertical_alignment=None,    # 垂直对齐方式top/bottom/center

3)框架元素的更新方法

        window[key].Update()

4)框架元素的更新属性:

        value=None

        visible=None

import PySimpleGUI
import PySimpleGUI as pg
layoutL = [
            [pg.T("账号"), pg.InputText()],
            [pg.T("密码"), pg.InputText()],
            [pg.B("确认", key="A")]
]
layoutR = [
            [pg.B("确认", size=(80,40))]
]
layout = [[pg.Frame("登录框", layoutL, key="B"), pg.Frame("恭喜哦", layoutR, key="C", visible=False)]]
wd = PySimpleGUI.Window("GOOD", layout, grab_anywhere=True)
while True:
    event, values = wd.read()
    if event is None:
        wd.close()
        break
    if event == "A":
        wd["B"].update(visible=False)
        wd["C"].update(visible=True)

 25标签元素

1)标签元素的书写方法

        PySimpleGUI.TabGroup([[sg.Tab("标题",布局),sg.Tab("标题",布局)]])

        标签元素也是一种容器元素,里面可以放置各种元素及布局

2)标签元素的属性

        

layout = [
    [pg.TabGroup([[pg.Tab("智驾设置", layoutL,
                          background_color="",
                          font="",
                          pad=None,
                          disabled=False,
                          border_width=None,
                          key="",
                          tooltip=None,
                          right_click_menu=None,
                          visible=True,
                          element_justification="",     # 容器内元素的对齐方式left/right/center
                          ), pg.Tab("CRC", layoutR)]])]
]

3)标签组的元素属性

layout = [
    [pg.TabGroup([[pg.Tab("智驾设置", layoutL), pg.Tab("CRC", layoutR)]],
                 tab_location=None,             # 标签标题所处的位置,有效值12个,left/right/top/bottom/lefttop/leftbottom
                                                                        #   righttop/bottomleft,bottomright,topleft/topright
                 title_color="",                # 标题文本颜色(未选中时)
                 tab_background_color="",       # 所有标签背景颜色(未选中)
                 selected_title_color="",       # 标题文本颜色(中时)
                 selected_background_color="",  # 所有标签背景颜色(未选中)
                 background_color="",           # 标签标题所在空白区域的背景颜色
                 font=None,
                 enable_events=False,
                 pad=None,
                 border_width=None,
                 key="",
                 tooltip="",
                 visible=True

                 )]
]

4)标签组的可更新属性

        title=None / disabled=None / visible=None

 26文件选择器

1)文件选择器书写方式

        PySimpleGUI.FileBrowse()单文件

        PySimpleGUI.FilesBrowse()多文件

layout = [
    [pg.FileBrowse(), pg.In()]
]
wd = PySimpleGUI.Window("GOOD", layout, grab_anywhere=True)
while True:
    event, values = wd.read()
    if event is None:
        wd.close()
        break

2)文件选择器属性

layout = [
    [pg.FileBrowse(button_text="",              # 按键显示文本
                   key="",                      # 记录路径的当行输入框的key,注意此key必须有对应的输入框
                   file_types=(("ALL Files", "*.*")),   # 寻找文件时,只显示对应文件或者对应类型的文件
                   initial_folder=r"",                   # 默认路径设定
                   

                   ), pg.In()]

27 文件夹选择器和文件另存为

1)文件夹选择器

        PySimpleGUI.FolderBrowse()

layout = [
    [pg.FolderBrowse(button_text="",
                     target="key",              # 指定存放目录地址的元素key
                     initial_folder=None,       # 设定默认路径
                     ), pg.In()]
]

2)文件另存为

        PySimpleGUI.FileSaveAs()

layout = [
    [pg.FolderBrowse(button_text="",
                     target="key",              # 指定存放目录地址的元素key
                     initial_folder=None,       # 设定默认路径
                     ), pg.In()],
    [pg.FileSaveAs(button_text="",
                   target="key",
                   file_types=("ALL Files", "*.*"),)]
]

 28颜色选择器、日历选择器

1)颜色选择器书写方式:

        PySImpleGUI.ColorChooserButton("button_text="")

        属性:

                button_text=None

                target=key

2)日历选择器书写方式:

        PySimpleGUI.CalendarButton(button_text="")

    [pg.CalendarButton(button_text="日历选择器",
                       close_when_date_chosen=True,         # 选择日期后关闭日历界面
                       default_date_m_d_y=(月份, 日期, 年份),  # 设置默认打开日期后显示的日期
                       locale="",                           # 区域设定
                       format="%Y-%m-%d %H:%M:%S",          # 设定显示的格式,可以给更换位置
                       begin_at_sunday_plus=0,              # 设定日历显示第一天的星期Day
                       month_names=None,                    # 指定月份的列表
                       day_abbreviations=None,              # 指定星期的列表
                       title="",                            # 选择窗口的标题
                       no_titlebar=False,                   # 不显示日期窗口的标题
                       location=(None, None)                # 日历窗口的位置
                       )]]

 29关于弹窗的各种设定

1)弹窗的书写方式:

        PySimpleGUI.popup()

2)弹窗的属性

    [pg.popup(title="",             # 弹窗标题
              button_color=None,    # (文本颜色,背景颜色)
              background_color="",  # 弹窗的背景颜色
              text_color="",        # 弹窗上面的文本颜色
              auto_close=False,     # 弹窗是否自动关闭
              auto_close_duration=None, # 弹窗自动关闭前需要显示的事件(以s为单位)
              custom_text=(None, None),      # 自定义窗口按钮上的文本,可以设定一个、两个
              non_blocking=False,   # 非租塞设定,如果为true,则弹窗不会影响程序下一步,否则需要等待用户输入
              font=None,
              no_titlebar=True,     # 不显示标题栏
              grab_anywhere=True,
              keep_on_top=False,    # 保持界面在屏幕的最前方
              location=(None, None),    # 设置弹窗的位置
              any_key_closes=False,     # 任意键关闭弹窗
              image=None,               # 显示图片(支出base64)
              modal=True,               # 模态窗口设定,除非关闭此窗口,否则不能操作其他界面

              )]
]

3)弹窗的返回值

        弹窗的返回值是根据所点击的按键来返回的,即按钮的名字,或者按键关闭激活后的按键名字

30弹窗之弹窗输入框

1)书写方式:

        PySimpleGUI.PopupGetText()

2)弹窗输入框的返回值

        PySimpleGUI.PopupGetText()返回的就是输入的值

3)exit()直接退出主程序

31其他弹窗

1)文件夹选择弹窗:

        PySimpleGUI.PopupGetFile() / PySimpleGUI.popup_get_file()

2)没有标题的弹窗,可以随意移动窗口:

        PySimpleGUI.PopupGetFolder() / PySimpleGUI.popup_get_folder()

3)显示一段时间后自动关闭窗口:

        PySimpleGUI.PopupAnnoying()

4)含有一个cannelled的按钮

        PySimpleGUI.PopupCancel()

5)弹窗含有ok和cancel两个按钮

        PySimpleGUI.PopupOKCancel()

6)含有一个颜色的Error按钮

        PySimpleGUI.PopupError()

7)显示无按钮的弹窗

        PySimpleGUI.PopupNoButtons()

8)闪现的弹窗

        PySimpleGUI.PopupNoWait()

32菜单栏的设定

1)菜单栏的书写方式:

        通过menu写菜单,在layout中加菜单即可

meun = [
        ["文件(&F)", ["保存", "!不可选", "---", "退出"]]
]

2)菜单栏的重点补充

        

meun = [
        ["文件(&F)", ["保存::保存", "!不可选", "---", "退出"]]
]

在对应选项旁边加::就可以指定key

[pg.Menu(meun, key="A", tearoff=True)],

tearoff设置菜单栏是否可以独立出来

33 window属性

wd = PySimpleGUI.Window("GOOD", layout, grab_anywhere=True,
                        location=(None, None),
                        size=(None, None),
                        element_padding=((x,y),(m,n)),      # 界面内所有元素的间隔
                        button_color=("",""),               # 按键元素颜色统一设定,文本颜色,背景颜色
                        font="",
                        background_color="",
                        auto_close=False,                   # 界面自动关闭3s
                        auto_close_duration=x,              # 默认界面自动关闭为3s
                        no_titlebar=False,                  # 是否需要窗口标题栏
                        keep_on_top=False,                  # 界面保持最前方
                        resizable=True,                     # 界面生成后,可以调整大小
                        disable_close=False,                # 如果为True,窗口关闭按钮将不起作用
                        disable_minimize=False,             # 如果为True,将不能最小化窗口
                        right_click_menu=None,
                        transparent_color=None,             # 界面透明度设定
                        element_justification="left",       # 元素对齐方式,"left"/"right"/"center"
                        )

 34多行文本框

1)多行文本框书写方式:

        PySimpleGUI.ML()

 2)多行文本框属性

    [pg.ML(default_text="",             # 默认文本
           disabled=True,               # 禁用状态
           border_width=None,           # 边界线宽度设定
           size=(x,y),                  # 宽度和行高设定
           background_color=None,
           text_color=None,
           enable_events=True,          # 设定后,点击元素会返回key
           key="",
           write_only=False,            # 只写
           reroute_stdout=False,        # True时,print语句内容会显示在此文本框内
           reroute_cprint=True,         # 使用cprint将内容打印到此文本框内
           reroute_stderr=False,        # 步骤异常时,将文本写在此元素内,sys.stderr.write("")
           autoscroll=True,             # 更多数据添加到末尾时,元素的内容将自动滚动
           focus=False,
           font=None,
           pad=None,
           tooltip="",
           justification=None,          # 对齐方式设定
           right_click_menu=None,
           visible=True,
           do_not_clear=True,           # 窗口读取一次,内容就会自动清除
           )],

3)多行文本框可更新属性:

        wd["AAA"].update(value="",
                         disabled=None,
                         append=False,          # 如果为True,要更新内容会接在原本文本下方,原来的不会消失
                         font=None,
                         text_color=None,
                         background_color=None,
                         text_color_for_value=None,
                         visible=None,
                         autoscroll=None,
                         justification=None,
                         )

4)关于cprint方法:

        PySimpleGUI.cprint() 、 PySimpleGUI.print()

    [pg.cprint("", end=None,            # 结束符,默认为回车键
                   sep=None,            # 分隔符,默认为空格键
                   text_color=None,
                   background_color=None,
                   colors=None,
                   key=None,
                   justification="对齐方式"
               )]

5)元素之间的垂直分隔线

        PySimpleGUI.VerticalSeparator(color=None,key=None,pad)

35表格元素

1)表格元素的书写方式:

        PySimpleGUI.Table()

2)表格元素的属性

    [sg.Table(headings=a,               # 表格头部
              max_col_width=None,       # 所有列的最大宽度
              auto_size_columns=False,  # 是否自动适应列宽度
              def_col_width=None,       # 定义列表宽度
              display_row_numbers=False,  # 是否显示序列号
              justification="l",        # 对其方式
              num_rows=10,              # 定义行数
              row_height=30,            # 定义行高
              key="",
              font=("黑体", 10),
              text_color=None,
              background_color="red",
              enable_events=True,
              bind_return_key=True
              )]
  • 56
    点赞
  • 286
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值