Python学习--PySimpleGUI

2023-10-19 09:20
文章标签 python 学习 pysimplegui

本文主要是介绍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()breakif 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()breakif 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()breakif 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()breakif 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()breakif 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, etcborder_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,点击时会返回keybind_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()breakif 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()breakif 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()breakif 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/toprighttitle_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",              # 指定存放目录地址的元素keyinitial_folder=None,       # 设定默认路径), pg.In()]
]

2)文件另存为

        PySimpleGUI.FileSaveAs()

layout = [[pg.FolderBrowse(button_text="",target="key",              # 指定存放目录地址的元素keyinitial_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,              # 设定日历显示第一天的星期Daymonth_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,                   # 界面自动关闭3sauto_close_duration=x,              # 默认界面自动关闭为3sno_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,          # 设定后,点击元素会返回keykey="",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)]

这篇关于Python学习--PySimpleGUI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/238851

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识