簡體   English   中英

動態更改行大小 PySimpleGUI

[英]Dynamically change row size PySimpleGUI

我試圖在按下按鈕時在 UI 中動態顯示行。

為此,我首先在布局中聲明該行,但將其隱藏。 然后當我得到值時,我隱藏了行。

有時文字很大,所以我在python中使用textwrap的填充方法。 所以這給了我 2 到 3 行的文本。

但是當我嘗試時,每個字符出現在不同的行中。

disp_text = "Text:\n{}".format(textwrap.fill(some_text,70))

size = (70,disp_text.count("\n")+1)

window['-TEXT-'].set_size(size)

window['-TEXT-'].update(value = disp_text,visible = True)

假設some_text"Hello how are you....(and some 50 other characters)"

現在,使用上面的字符串, size(70,3)

因此,理想情況下,它應該將some_text包裝成 3 行。

但是GUI中實際的output是:

H
e
l

這基本上是some_text在 3 個單獨的行中的前 3 個字符,而不是some_text在 3 個不同的行中的一段時間。

如何解決這個問題?

打印您的 disp_text 以確保它符合您的想法。

這是一種方法。

import PySimpleGUI as sg

def main():
    layout = [  [sg.Text('My Window')],
                [sg.Text(size=(20,1), auto_size_text=False, key='-OUT-')],
                [sg.Button('Go'), sg.Button('Exit')]  ]

    window = sg.Window('Window Title', layout)

    while True:             # Event Loop
        event, values = window.read()
        print(event, values)
        if event == sg.WIN_CLOSED or event == 'Exit':
            break
        if event == 'Go':
            window['-OUT-'].set_size((20, 10))
            window['-OUT-'].update('This is my output string\nThat spans multiple rows\nAll the way to 3\n'+
                                   'It will even wrap if the string is too long')
            wraplen = window['-OUT-'].Widget.winfo_reqwidth()  # width tkinter says widget will be
            window['-OUT-'].Widget.configure(wraplen=wraplen)  # set wrap to width of widget to match contents

    window.close()

if __name__ == '__main__':
    main()

休息窗口

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM