【问题标题】:Content gets centered in PySimpleGui after hiding und unhiding content隐藏和取消隐藏内容后,内容在 PySimpleGui 中居中
【发布时间】:2021-11-15 17:29:30
【问题描述】:

我正在尝试在 PySimpleGui 中隐藏和取消隐藏内容。这是示例代码。 我怎样才能实现 sg.Frame 在隐藏和取消隐藏框架后居中(通过单击顶部的复选框)?

import PySimpleGUI as sg

frameContent=[]
frameContent.append([sg.Text('Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. ')],)
frameContent.append([sg.Text('Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes,')],)
frameContent.append([sg.Text('nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. ')],)
frameContent2=[]
frameContent2.append([sg.Text('Nulla consequat massa quis enim.')],)
frameContent2.append([sg.Text('Donec pede justo, fringilla vel, ')],)
frameContent2.append([sg.Text('aliquet nec, vulputate eget, arcu.')],)
frameContent3=[]
frameContent3.append([sg.Text('In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. ')],)
frameContent3.append([sg.Text('Integer tincidunt. Cras dapibus.')],)
frameContent3.append([sg.Text('Vivamus elementum semper nisi. Aenean vulputate eleifend tellus.')],)
frameContent4=[]
frameContent4.append([sg.Text('In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. ')],)
frameContent4.append([sg.Text('Integer tincidunt. Cras dapibus.')],)
frameContent4.append([sg.Text('Vivamus elementum semper nisi. Aenean vulputate eleifend tellus.')],)
layout = [  
            [sg.Checkbox('Tooltips', key="-showTooltips-", enable_events=True)],
            [sg.Frame('Frame',frameContent, key='-frame1-',visible=True)],
            [sg.Frame('Frame',frameContent2, key='-frame2-',visible=True  )],
            [sg.Frame('Frame',frameContent3, key='-frame1Tooltips-',visible=False)],
            [sg.Frame('Frame',frameContent4, key='-frame2Tooltips-',visible=False  )]
        ]

window = sg.Window('Window Title', layout)
while True:
    event, values = window.read()
    if event in (sg.WIN_CLOSED, 'Exit'):
        break
    if event == '-showTooltips-':
        for i in range(1,3):
            if values['-showTooltips-']:
                window["-frame"+str(i)+'-'].Update(visible=False)
                window["-frame"+str(i)+'-'].hide_row()
                window["-frame"+str(i)+"Tooltips-"].Update(visible=True)
                window["-frame"+str(i)+"Tooltips-"].unhide_row()
            else:  
                window["-frame"+str(i)+'-'].Update(visible=True)
                window["-frame"+str(i)+'-'].unhide_row()
                window["-frame"+str(i)+"Tooltips-"].Update(visible=False)
                window["-frame"+str(i)+"Tooltips-"].hide_row()
window.close()

【问题讨论】:

    标签: python pysimplegui


    【解决方案1】:

    使用sg.pin保持位置,hide_rowunhide_row不是必须的。

    Pin 是一个提供给布局的元素,因此当它再次变得不可见和可见时,它会 在正确的地方。否则它将被放置在其包含窗口/列的末尾。

    布局中的代码更新为

    layout = [
                [sg.Checkbox('Tooltips', key="-showTooltips-", enable_events=True)],
                [sg.pin(sg.Frame('Frame1',frameContent, key='-frame1-',visible=True))],
                [sg.pin(sg.Frame('Frame2',frameContent2, key='-frame2-',visible=True))],
                [sg.pin(sg.Frame('Frame3',frameContent3, key='-frame1Tooltips-',visible=False))],
                [sg.pin(sg.Frame('Frame4',frameContent4, key='-frame2Tooltips-',visible=False))]
            ]
    
    window = sg.Window('Window Title', layout)
    while True:
        event, values = window.read()
        if event in (sg.WIN_CLOSED, 'Exit'):
            break
        if event == '-showTooltips-':
            for i in range(1,3):
                if values['-showTooltips-']:
                    window["-frame"+str(i)+'-'].Update(visible=False)
                    window["-frame"+str(i)+"Tooltips-"].Update(visible=True)
                else:
                    window["-frame"+str(i)+'-'].Update(visible=True)
                    window["-frame"+str(i)+"Tooltips-"].Update(visible=False)
    window.close()
    

    【讨论】:

    • 谢谢,效果很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    相关资源
    最近更新 更多