• pythonGUI(二)基本元素之二


    1、选择菜单和旋转按钮

    选择菜单 OptionMenu

    sg.OptionMenu()
    注意!
    OptionMenu只有tkinter端口才有此元素,其他三个端口没有。
    此元素和设置了只读属性的ComboBox很像。
    OptionMenu没有font属性,也没有 enable_events 事件属性

    OptionMenu(values,
    
        default_value=None,
    
        key=None,
    
        size=(None, None),
    
        disabled=False,
    
        auto_size_text=None,
    
        background_color=None,
    
        text_color=None,
    
        pad=None,
    
        tooltip=None,
    
        visible=True,
            )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    Update方法,用于元素的更新。

    window[key].update()

    window[key].Update()

    元素可以更新的属性只有如下几种:

    Update(
        value=None,
        # 更新默认选中的元素
    
        values=None,
        # 更新所有显示的文本选项
    
        disabled=None,
        # 更新元素的禁用状态
    
        visible=None
        # 更新元素的可见状态
        )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    Python range()函数

    用于创建一个有序整数列表。

    返回值是一个可迭代的对象。

    一般用在 for 循环中,或者直接转化为列表

    range(10) 0~9整数 步长默认为1
    range(1,10) 1~9整数 步长默认为1
    range(1,10,2) 1,3,5,7,9 步长为2

    转换为列表

    print(list(range(10)))
    print(list(range(1,10)))
    print(list(range(1,10,2)))
    
    • 1
    • 2
    • 3

    结果

    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    [1, 3, 5, 7, 9]
    
    
    • 1
    • 2
    • 3
    • 4

    用于for循环的案例

    for i in range(10):
        print(i)
    
    • 1
    • 2

    结果

    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [Finished in 0.2s]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    import PySimpleGUI as sg
    
    sg.theme('DarkTeal8')
    
    layout = [
        [sg.T("OptionMenu"), sg.OptionMenu(values=list(range(10)), size=(5, 20), key='-optionMenu-'),
         sg.T("Combo"), sg.Combo(values=list(range(10)), size=(15, 20), key='-Combo-')],
        [sg.Ok()]
    ]
    window = sg.Window('Python GUI', layout, keep_on_top=True)
    
    while True:
        event, values = window.read()
        key = '-COMBO1-'
        print(event)
        if event == None:
            break
        if event == 'Ok':
            window['-optionMenu-'].update(value='u')
            window['-Combo-'].update(value='u')
            window['-optionMenu-'].update(values=['u',2,3])   # 必须是列表
            window['-Combo-'].update(values=['u',2,3])        # 可以不是列表容器
            window['-Combo-'].update(values='u')        # 可以不是列表容器
    
    
    window.close()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    1.2旋转按钮 Spin

    特征: 含有向上向下两个箭头按钮

    Spin(values,
        initial_value=None,
        key=None,
        disabled=False,
        enable_events=False,
        size=(None, None),
        auto_size_text=None,
        font=None,
        background_color=None,
        text_color=None,
        pad=None,
        tooltip=None,
        visible=True,
            )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    Update方法,用于元素的更新。

    window[key].update()

    window[key].Update()

    元素可以更新的属性只有如下几种:

    Update(value=None,
        values=None,
        # 可以是个整数。
        disabled=None,
        visible=None)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、单选框

    一组里面只能选择一项

    sg.Radio()orsg.R()

    Radio(text,
            # str 文本用于显示在单选框旁边
    
        group_id,
            # any
            # 组ID
    
        key=None,
            # 元素的唯一标识符
    
        default=False,
            # bool 如果为True,则默认选中
    
        disabled=False,
            # 设定禁用状态
    
        size=(None, None),
            # 设定元素宽度,行高
    
        auto_size_text=None,
            # bool 默认为True
            # 元素根据文本自动调整大小
    
        background_color=None,
            # 元素背景颜色
    
        text_color=None,
            # 元素文本颜色
    
        font=None,
            # 字体名称和大小设定
            # (str,int)
    
        pad=None,
            # 左右上下  (int,int)or((int,int),(int,int))
            # 元素间隔设定
    
        tooltip=None,
            # 悬浮文本设定
    
        enable_events=False,
            # 元素事件属性
            # 当设定为True时,选框被选中时会发生事件
    
        visible=True,
            # 设定元素的可见状态
    
            )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    import PySimpleGUI as sg
    
    list_comment = ["非常满意","满意","一般","不满意"]
    list_id = ["1.请对小A的服务进行评价","2.请对小B的服务进行评价"]
    layout = [
        [sg.T(list_id[0])]]+\
        [[sg.R(i,group_id=1) for i in list_comment]]+\
        [[sg.T(list_id[0])]]+\
        [[sg.R(i,group_id=2) for i in list_comment]
    
       ]
    window = sg.Window('Python GUI', layout, keep_on_top=True)
    
    while True:
        event, values = window.read()
        key = '-COMBO1-'
        print(event)
        if event == None:
            break
    window.close()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    巧用For循环快速定义单选框(1)

    • 定义三行元素的常用方式1

    layout=[[],[],[]]

    • 定义三行元素的常用方式2

    layout=[[]]+[[]]+[[]]

    • 利用for循环从左向右遍历时 方式1和方式2 都可以

    layout=[[],[],[()for循环]]
    layout=[[]]+[[]]+[[()for循环]]

    • 利用for循环从上向下遍历时 要用方式2

    layout=[[]]+[[]]+[[]for循环]

    巧用key=(x,y),For循环快速定义单选框(2)

    • 从左向右从上向下同时遍历
    layout=[[sg.R(x,group_id=y,key=(x,y)) for x in Comment]for y in range(9) ]
    
    • 1
    import PySimpleGUI as sg
    
    list_comment = ["非常满意","满意","一般","不满意"]
    list_id = ["1.请对小A的服务进行评价","2.请对小B的服务进行评价"]
    layout = [[sg.T(str(y+1)+".")]+[sg.R(text=x,group_id=y,key=str(x)) for x in list_comment] for y in range(0,9)
       ]
    window = sg.Window('Python GUI', layout, keep_on_top=True)
    
    while True:
        event, values = window.read()
        key = '-COMBO1-'
        print(event)
        if event == None:
            break
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    ResetGroup方法,相同组ID的单选框都更新为未选中状态。

    window[key].ResetGroup()

    window[key].reset_group()

    Update方法,用于元素的更新。

    window[key].update()

    window[key].Update()

    元素可以更新的属性只有如下几种:

    
    Update(
        value=None,
        # bool 如果为True,此单选框被选中,同组的其他选框更新为未选中。
    
        text=None,
        # str 更新显示在按钮旁边的文本
    
        background_color=None,
        # 更新背景颜色
    
        text_color=None,
        # 更新文本颜色
    
        disabled=None,
        # bool 更新元素的禁用状态
        
        visible=None
        # bool 更新元素的可见状态
    
        )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    import PySimpleGUI as sg
    
    list_comment = ["非常满意","满意","一般","不满意"]
    list_id = ["1.请对小A的服务进行评价","2.请对小B的服务进行评价"]
    layout = [[sg.T(str(y+1)+".")]+[sg.R(text=x,group_id=y,key=(x,y+1)) for x in list_comment] for y in range(0,9)]+[[sg.Ok()]
       ]
    window = sg.Window('Python GUI', layout, keep_on_top=True)
    
    while True:
        event, values = window.read()
        print(values)
    
        if event == None:
            break
        if event=="Ok":
            # window[('不满意', 3)].reset_group()
            window[('不满意', 3)].update(value=True)
    
    
    
    window.close()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    3、复选框 Checkbox

    sg.Checkbox()or sg.CB()

    
    Checkbox(
        text,
            # 文本显示在选框旁边
        default=False,
            # bool 如果为True,则选中
        size=(None, None),
            # 尺寸设定,元素的宽度和行高
        auto_size_text=None,
            # bool 默认为True
        font=None,
            # (str,int)字体的名称和大小设定
        background_color=None,
            # 背景颜色设定
        text_color=None,
            # 字体颜色设定
        enable_events=False,
            # bool 元素的事件属性
        disabled=False,
            # bool 元素的禁用状态
        key=None,
            # 元素的唯一标识符
            # 规范key='-CHECKBOX-'
        pad=None,
            # 和周围元素的间隔((int,int),(int,int)) 左右上下
        tooltip=None,
            # str 悬浮文本设定
        visible=True,
            # bool 元素的可见状态设定
         )
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    import PySimpleGUI as sg
    
    list_comment = ["老虎","狮子","猴子","猫","狗","鳄鱼"]
    layout = [[sg.T("选择你喜欢的动物吧!!!")]]+\
             [[sg.CB(i)] for i in list_comment]+\
             [[sg.Ok()]]
    window = sg.Window('Python GUI', layout, keep_on_top=True)
    
    while True:
        event, values = window.read()
        print(values)
    
        if event == None:
            break
     
    
    
    
    window.close()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述

    Update方法,用于元素的更新。

    window[key].update()

    window[key].Update()

    元素可以更新的属性只有如下几种:

    
    Update(
        value=None,
        # 更新选中状态
        # bool 如果为True,则选中,如果为False,则清空选中状态
    
        text=None,
        # str  更新选框旁边的文本
    
        background_color=None,
        # 更新元素的背景颜色
    
        text_color=None,
        # 更新元素的文本颜色
    
        disabled=None,
        # 更新元素的禁用状态
    
        visible=None
        # 更新元素的可见状态
        )
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    import PySimpleGUI as sg
    
    list_comment = ["老虎","狮子","猴子","猫","狗","鳄鱼"]
    layout = [[sg.T("选择你喜欢的动物吧!!!")]]+\
             [[sg.CB(i)] for i in list_comment]+\
             [[sg.Ok()]]
    window = sg.Window('Python GUI', layout, keep_on_top=True)
    
    while True:
        event, values = window.read()
        print(values)
    
        if event == None:
            break
    
        if event == "Ok":
            # 复选框在不进行key值设定时,默认用数字作为key 从0开始
            for i in range(6):
                window[i].update(
                    value= True,
                    text = None,
                    background_color='yellow',
                    text_color='red',
                    disabled=True,
                    visible=None
    
                )
    
    
    
    window.close()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    在这里插入图片描述

    4、滑块 Slider

    滑块,有水平方向的也垂直方向的。

    sg.Slider()

    Slider(
        range=(None, None),
        # 滑块范围(最小值,最大值) 默认1-10
        key=None,
        # 元素的唯一标识符 规范书写key='-SLIDER-'
        default_value=None,
        # 滑块初始所处位置
        resolution=None,
        # 滑块值变动的最小单位值
        tick_interval=None,
        # 刻度值标记
        orientation=None,
        # 方向设定 水平方向或者垂直方向
        # 有效值'horizontal' or 'vertical' 
        # 支持简写:'h' or 'v'
        disable_number_display=False,
        # bool 默认为False,如果为True,滑块旁的数字不显示。
        border_width=None,
        # 边界线宽度
        relief=None,
        # 浮雕设计,与border配合使用才有效
        # 'raised','sunken','flat','ridge','solid','groove'
        enable_events=False,
        # 元素的事件属性
        disabled=False,
        # 元素禁用状态设定
        size=(None, None),
        # 元素的尺寸设定 宽度和行高
        font=None,
        # 字体名称和大小设定
        background_color=None,
        # 滑块背景颜色设定
        text_color=None,
        # 元素文本颜色设定
        pad=None,
        # 元素间隔设定((int,int),(int,int))
        tooltip=None,
        # 元素悬浮文本设定
        visible=True,
        # 元素可见状态设定
        )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    sg.theme_slider_color('') 用于设定滑块轨迹的颜色

    import PySimpleGUI as sg
    
    sg.theme_slider_color("yellow")
    #要在字符串中插入变量的值,可在前引号前加上字母f,再将要插入的变量放在花括号内
    layout = [[sg.Slider(key=f'-SLIDER{i}-',
                         range=(1,500),
                         default_value=100*(i+2),
                         resolution=100,
                         tick_interval=100,
                         orientation='v',
                         disable_number_display=True,
                         border_width=5,
                         relief='sunken',
                         enable_events=True,
                         disabled=False,
                         size=(10,55),
                         font=("黑体",5),
                         background_color="blue",
                         text_color='red',
                         )for i in range(3)]
    ]
    window = sg.Window('Python GUI', layout, keep_on_top=True)
    
    while True:
        event, values = window.read()
        print(values)
    
        if event == None:
            break
    
    
    window.close()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    Update方法,用于元素的更新。

    window[key].update()

    window[key].Update()

    元素可以更新的属性只有如下几种:

    Update(
        value=None,
        # int or float
        range=(None, None),
        # (int,int) or (float,float)
        disabled=None,
        # bool 
        visible=None
        # bool
        )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    5、图片显示 Image

    sg.Image()

    Image(
        filename=None,
        # 图片路径仅支持GIF和PNG
    
        data=None,
        #base64编码的字符串
    
        background_color=None,
        #背景颜色设定
    
        size=(None, None),
        # 图片 宽度和高度设定(pix)
    
        pad=None,
        #和周围元素间的间隔 ((int,int),(int,int))
        # 左右上下顺序
    
        key=None,
        # 元素的唯一标识符
    
        tooltip=None,
        # 元素的悬浮文本
    
        right_click_menu=None,
        # 右击调出菜单  ['开始',['开始','中止','结束']]
    
        visible=True,
        # 元素可见状态 bool
    
        enable_events=False,
        # 元素事件属性,默认为False
            )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    f-string 格式化字符串常量(formatted string literals)

    Python3.6新引入的一种字符串格式化方法。
    目的是使格式化字符串的操作更加简便。
    大括号 {} 标明被替换的字段。

    举例:

    
    # str 和 int 之间不可以直接相加 
    
    age=18
    age_diff=5
    
    
    print('我今年'+str(age)+'岁,他比我大'+str(age_diff)+'岁。')
    
    print(f'我今年{age}岁,他比我大{age_diff}岁。')
    
    >>
    我今年18岁,他比我大5岁。
    我今年18岁,他比我大5岁。
    
    
    ----------------------------------------
    age=(1,4)
    
    print(f'他比我大{age[0]}岁还是{age[1]}岁?')
    
    print(f'他比我大{age}岁?')
    
    >>
    他比我大1岁还是4岁
    他比我大(1, 4)岁
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    import PySimpleGUI as sg
    
    image_path=r"C:\Users\Admin\Desktop\Images\图片"
    layout=[[sg.Image(filename=image_path+f'{i}.png')for i in range(1,5)]]
    
    window = sg.Window('Python GUI', layout, keep_on_top=True)
    
    while True:
        event, values = window.read()
        print(values)
    
        if event == None:
            break
    
    
    window.close()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    UpdateAnimation动图更新方法

    window[key].update_animation()
    window[key].UpdateAnimation()

    动图可以更新的属性只有如下几种:

    window[key].UpdateAnimation(
    
            source,
            # 包含动画GIF的文件名或Base64编码的字符串
    
            time_between_frames=0
            # 显示帧之间要等待的毫秒数
    
        )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    import PySimpleGUI as sg
    
    base64_default = sg.DEFAULT_BASE64_LOADING_GIF
    layout=[[sg.Image(data=base64_default,key='-gif-')]]
    key='-gif-'
    window = sg.Window('Python GUI', layout, keep_on_top=True)
    
    while True:
        event, values = window.read(timeout=10)  # 每隔10毫秒重新读一次界面
        print(values)
        window[key].update_animation(source=base64_default,time_between_frames=100)  # 帧于帧之间等到的毫秒数
        if event == None:
            break
    
    
    window.close()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    Update方法,用于元素的更新。

    window[key].update()

    window[key].Update()

    元素可以更新的属性只有如下几种:

    Update(
        filename=None,
        # 更新图片路径
    
        data=None,
        # 更新元素base64编码字符串
    
        size=(None, None),
        # 更新元素的大小
    
        visible=None
        # 更新元素的可见状态
        )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    import PySimpleGUI as sg
    ͼƬ1 = b'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'
    ͼƬ2 = b'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'
    ͼƬ3 = b'iVBORw0KGgoAAAANSUhEUgAAAD4AAAA+CAYAAABzwahEAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFxEAABcRAcom8z8AAALtSURBVGhD7Ztdc9JAFIZPKEUoIMiHtUxHbXvV8ePSO/9Rf07/kXde63QcdRgpU5QWKAkQIAH0bFcmxhp2ye5mMTwzZ9gNk8w85J2wOQTj7fnZAmLGu7NzI0HHsWN5xg/enJIN/zOt9xfkNdZnfCuuE+54Skfy0E580OrQkVy0Ekdp67JNZ3LRRlylNKKFuGppJHLxP6QX6haRkYp7pR3TVukdnbhf2jFHZKyKSMRlSQ+/d2F0fUtnwSgXlyG9mM/h9usVmI0f0K+36NZglIoPJUhPrRHcfKiD3emT+cOn++R1FcrEUdoULI3R7lx8I0vcZOYBlE+fQfZJib4bjBJx0dLeaCOZSgEqL55DKr9H5ixIFxctfV+0i8c1MBJ8KlLFRUuHibYfaeIipUVE209g6wm/Glx7QmfszBwXZhOHjHmkM7XSr8gaUH19Asl0im4F6H1uwrhnkTFGe92zzNV6mg5s7lpHOggUDRttP0xRd0cTmHQs7hIhjWCkq6+OQ0XbD5P4wpnBzJ5yl85IvarrzFY8bmzFdWdw1WEqZzSmewSzEeK4Lreabba6vKZ7BbMR4plyAfaqReZiYWOiXjg6YKp0KU/3CGZ7cYsbW/G4wSRu7BiQ2N3hLp1hEk/mMpDeL3JXMpumRwgHNkOwGfH7Pl8EK8UTu8m1Ckk9ygqRNxtt0oG5+ViHcfeuExMWaU89YX8Mm4PItDcEd7h6Kfmv1hM2F7ENhh1WJFcrQ/7wMRnzoOSpJ29vLOyZxw/B23bCNXn3UyNU9KVe1UXKI6SHfnLXQ5/0h6GiL1UcES2P6/bKyyPSf5u7M+h9aS5/j+NBujgiWv6v6Lf4o69EHBEtj4SJvjJxRIb8fdFnQak4IkPeG/38YZVuDUa5OCJDHsHj5moVOgsmEnFEljwrkYkjfnkwyFAJkYojXnnDUGceuTjilVeFFuKIanltxBGV8lqJIyivAu3EEe+9uCy0FFdBbMWXrac4Ees/3MUUgJ8kgTzozg6iyQAAAABJRU5ErkJggg=='
    ͼƬ4 = b'iVBORw0KGgoAAAANSUhEUgAAAD4AAAA+CAYAAABzwahEAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFxEAABcRAcom8z8AAAL5SURBVGhD7ZvdThNBFMfPbltrK6VAoUURRYwx3miM3nrnO/gUPo1P4Tt45wNgjJGoCfWjiiyUtvS7u23dM53I0sh2pjszO3X3R052Zkmb/Jh/htlDMZ6/fD2GiPHm1QvDpOPI8XfFbz54Rm78z1T235JrpFc8FtcJZ9ClI3loJ96sVuhILlqJo3TDKtOZXLQRVymNaCGuWhoJXfyC9FjdITJUca+03anD2P1SRWji09IDt1QSirgs6dbpT2jXf9OZP8rFZUiPR0M4/fUJ6kcHUDv8Qu/6o1RchnS/04Cj8h50GhaZr5R2yXUWysRlSGO0j7+9J0fcVDoLG7cfwdLaFv2uP0rERUt7o41k80Uo7jyGdHaZzFmQLi5aehLtdxeivXbjPhgmn4pUcdHS59Hu0Gg/ZI72NNLERUpfHu08mc+Db+updvgZ7D7/s/HQGcDQ7pExj3S2cAsMw4TNu08heSVD7wJUKx+h26ySMUZ73lXmaj0NumfcNY+0HygaNNrTMEXd6begd2ZxlwhpBCNd2n0SKNrTMImPHBuG7obCWzojdVfXmVg8asTiutOs/mAqu9emr/BnIcTxXN6wvrLV8eS0OIuFEMcj6rWVTeZiYWGivnr9HlNlcuv0Ff7Em1vUiMWjBpO4YSbATKS4S2eYxFOZZcisbnFX8mqOvkMw7H6HNCMc+pwvgpniZtJdvTkKSS8VhMg3rAPSgbHKe+71hN4NhrRPPWF/DJuDSL9VBafXJGM/Lms9Yd8c/0KCHVYkV9iGfHGHjHlQ8qknb28s6MrjD8HbdsIz+cn3D4GiL3VXFymPnPfQE9Br1wJFX6o4Iloez+2lO5PW8mjouJvePnk44UW6OCJaXkT0lYgjouWRINFXJo7IkP9X9FlQKo7IkPdGP7/B9mtOuTgiQx7B982tb9OZP6GII7LkWQlNHJmWdw+SZKyCUMURr7xhREgc8cqrQgtxRLW8NuKISnmtxBGUV4F24oj3WVwWWoqrILLi8b9YxkQCgD/BqDzP2hgYEAAAAABJRU5ErkJggg=='
    ͼƬ5 = b'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'
    data_list=[ͼƬ1,ͼƬ2,ͼƬ3,ͼƬ4,ͼƬ5,]
    layout=[[sg.Image(data=ͼƬ5,
        background_color="red",
        # size=(10,20),
        # pad="",
        key='-Image-',
        tooltip="这是一张图片",
        enable_events=True,
        right_click_menu=[1,['-图片切换-', '退出界面']]
    
    
    
    )]]
    key='-gif-'
    window = sg.Window('Python GUI', layout, keep_on_top=True)
    i=0
    while True:
        event, values = window.read()  # 每隔10毫秒重新读一次界面
        print(values)
        if event == None:
            break
        if event == '-Image-':
            window['-Image-'].update(data=data_list[i])
            i=i+1 if i<4 else 0
        if event == '-图片切换-':
            window['-Image-'].update(data=data_list[i])
            i=i+1 if i<4 else 0
            print(event)
        if event == "退出界面":
            print("Exit")
            break
    
    
    
    window.close()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
  • 相关阅读:
    毕业设计案例:Python实现疫苗接种数据库管理系统
    Centos7安装RabbitMQ
    strongswan:使用kernel-libipsec
    C++实战-Linux多线程(入门到精通)
    .netCore用DispatchProxy实现动态代理
    回溯算法 | N皇后 | leecode刷题笔记
    【C3AE】《C3AE:Exploring the Limits of Compact Model for Age Estimation》
    2022年全球市场干湿两用电动剃须刀总体规模、主要生产商、主要地区、产品和应用细分研究报告
    Flink是什么?场景?处理流的发展演变?
    Visual Studio的调试bug
  • 原文地址:https://blog.csdn.net/Mwyldnje2003/article/details/126692230