首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更改pysimplegui中显示的图像

如何更改pysimplegui中显示的图像
EN

Stack Overflow用户
提问于 2022-09-12 11:20:25
回答 1查看 253关注 0票数 0

我按照下面的代码创建了GUI。通过单击图像按钮将显示的图像更改为新图像是否可行,以便在表单更新时保存新图像?此外,在上传更新(和保存)表单后,只显示已填充的字段是否可行?提前感谢

代码语言:javascript
运行
复制
# ----------- Importing Libraries ---------------

import PySimpleGUI as sg
from datetime import datetime
import base64


sg.theme('DarkTeal9')      
#------------------------------Create single layouts----------------------------------

flower_base64 = "image code here"

layout_img = [[sg.Button('', image_data=flower_base64, button_color=(sg.theme_background_color(),sg.theme_background_color()),border_width=0, key='-GRAPH-')]]


   
layout_1 = [[sg.InputText("", key="-IT2-", font='Arial 9', size=(10,1)),
             sg.Combo(["Item1", "Item2", "Item3"],size=(20,1), key='-TEST2-', font='Arial 9'),
             sg.CalendarButton("", close_when_date_chosen=True,  target='-IN2-', font='Arial 9', no_titlebar=False, format='%d-%b-%Y'),
             sg.InputText("", key='-IN2-', size=(20,1), font='Arial 9')]]


layout_a = [[sg.Button("row 2")]]

layout_2 = [[sg.InputText("", key="-IT3-", font='Arial 9', size=(10,1)),
             sg.Combo(["Item1", "Item2", "Item3"],size=(20,1), key='-TEST3-', font='Arial 9'),
             sg.CalendarButton("", close_when_date_chosen=True,  target='-IN3-', font='Arial 9', no_titlebar=False, format='%d-%b-%Y'),
             sg.InputText("", key='-IN3-', size=(20,1), font='Arial 9')]]

layout_b =[[sg.Button("row 3")]]

layout_3 = [[sg.InputText("", key="-IT4-", font='Arial 9', size=(10,1), visible=True),
             sg.Combo(["Item1", "Item2", "Item3"],size=(20,1), key='-TEST4-', font='Arial 9'),
             sg.CalendarButton("", close_when_date_chosen=True,  target='-IN4-', font='Arial 9', no_titlebar=False, format='%d-%b-%Y'),
             sg.InputText("", key='-IN4-', size=(20,1), font='Arial 9', justification="c")]]

#------------------------------Create master layout----------------------------------
               
layout = [[sg.Column(layout_img, key="-AZZ-")],
          [sg.Column(layout_1, key='-LAY1-'), sg.Column(layout_a, visible=True, key="-LAYA-")],
          [sg.Column(layout_2, visible=False, key='-LAY2-'), sg.Column(layout_b, visible=False, key='-LAYB-')],
          [sg.Column(layout_3, visible=False, key='-LAY3-')],
          [sg.Button ("Save"), sg.Button ("Load"), sg.Button("Upload"), sg.Button('Exit')]]
        

window = sg.Window("", layout, no_titlebar=True)


while True:
    event, values = window.read()
        
    if event == 'Save':
        filename = sg.popup_get_file("Save", save_as=True, no_window=True)
        window.SaveToDisk(filename)
    if event == 'Load':
        filename = sg.popup_get_file('Load', no_window=True)
        window.LoadFromDisk(filename)
        if "-IT2-":
            window[f'-LAY2-'].update(visible=True)
            window[f'-LAYA-'].update(visible=False)
        if "-IT3-":
            window[f'-LAY3-'].update(visible=True)
            
    if event == sg.WIN_CLOSED or event == 'Exit':
        break
        window.close()
    if event == 'row 2':
        window[f'-LAY2-'].update(visible=True)
        window[f'-LAYA-'].update(visible=False)
        window[f'-LAYB-'].update(visible=True)
        layout = str(event)
    if event == 'row 3':
        window[f'-LAY3-'].update(visible=True)
        window[f'-LAYB-'].update(visible=False)
        layout = str(event)

window.close()
EN

回答 1

Stack Overflow用户

发布于 2022-09-12 13:42:15

这里有一个简单的脚本,仅用于演示,只有一个Image元素可以保存并加载到GUI中。

代码语言:javascript
运行
复制
import json
from pathlib import Path
import PySimpleGUI as sg

settings_file = 'settings.json'
settings = {'-Image-':None}

if Path(settings_file).is_file():
    with open(settings_file, 'rt') as f:
        settings = json.load(f)

layout = [
    [sg.FileBrowse(target='Browse', enable_events=True, key='Browse')],
    [sg.Image(filename=settings['-Image-'], visible=(settings['-Image-'] is not None), key='-Image-')],
]
window = sg.Window('Window Title', layout)

while True:
    event, values = window.read()

    if event == sg.WIN_CLOSED:
        break
    elif event == 'Browse':
        filename = values['Browse']
        window['-Image-'].update(filename=filename, visible=True)
        window.refresh()
        window.move_to_center()
        settings['-Image-'] = filename

with open(settings_file, 'wt') as f:
    json.dump(settings, f)

window.close()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73688476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档