首页 > 解决方案 > PySimpleGUI Python3 中的图像

问题描述

所以我正在使用 PySimpleGUI 为一个项目制作一个邮件服务应用程序,我真的在为图像放置而苦苦挣扎......这是我的代码:

import PySimpleGUI as sg
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText


sg.theme('Dark')
layout = [[sg.Frame('', [[
        sg.Image('xmail.png', size=(1100, 300))]])],
            [sg.Frame('Options', [[
                sg.Checkbox('Confidential'), sg.Checkbox('Extra Confidential'),
                sg.Checkbox('Not Confidential')]])],
            [sg.Text('Sender Email'+':', size=(14, None)), sg.InputText(key='sender_email1')],
            [sg.Text('Sender Password'+':', size=(14, None)), sg.InputText(password_char='*', key='sender_password1')],
            [sg.Frame('Encryption key - (optional)', [[
                sg.Slider(range=(1, 100), orientation='v', size=(5, 20), default_value=25, key='slider_encrypt1'),
                sg.Slider(range=(1, 100), orientation='v', size=(5, 20), default_value=75, key='slider_encrypt2'),
                sg.Slider(range=(1, 100), orientation='v', size=(5, 20), default_value=55, key='slider_encrypt3')]])],
            [sg.Text('Receiver Email'+':', size=(14, None)), sg.InputText(key='receiver_email1')],
            [sg.Text('Subject', size=(14, None)), sg.InputText(key='subject1')],
            [sg.Multiline('Email...', key='email_message1', size=(70, 12))],
            [sg.Button('Send Mail', button_color=('white', 'green')),
            sg.Button('Cancel', button_color=('white', 'red'))]]


window = sg.Window('Window Title', layout, size=(1100, 950))
event, values = window.read()

这只是我在它下面有很多代码用于邮件服务的实际功能的布局。这就是它的样子 - 在此处输入图像描述

您可以看到第一张图像非常适合。我想要的是在右侧添加一个垂直的并且非常适合的图像,但是发生的事情是......

在此处输入图像描述

正如您所看到的,它完全把它弄乱了,并且把文本框打乱了,有没有人知道如何解决这个问题?我尝试将包含文本的图像的代码添加到不同的位置,但它永远不会起作用,它总是做同样的事情,把它搞砸了:/

感谢所有阅读本文的人!:)

标签: pythonpython-3.xpysimplegui

解决方案


您可以使用sg.Framesg.Column来分隔左框架和右框架。您的Checkbox, Text, Slider, Multiline, ... 的左框架布局,以及另一个垂直图像的右框架的另一个布局。像这样的东西

top_frame = [[sg.Image(...)]]
left_frame = [[sg.Frame(...)], [sg.Text(...}], ...]
right_frame = [[sg.Image(...)]]

layout = [
    [sg.frame("", top_frame)],
    [sg.frame("", left_frame), sg.frame("", right_frame)]
]

推荐阅读