簡體   English   中英

如何在 PySimpleGUI 中添加最大列數並展開 windows?

[英]How do I add a maximum column count and expand windows in PySimpleGUI?

我想要做的是在 Python 中創建一個帶有復選框的 GUI,並讓它打印用戶所做的選擇。 此代碼有效:

import PySimpleGUI as sg

color_list = ['red', 'orange', 'yellow', 'green', 'blue', 'purple']

layout = [
    [sg.Column(
        [[sg.Checkbox(item, key=item)] for item in color_list],
        justification='left',

    )],
    [sg.Button('Submit')]
]

window = sg.Window('Select Colors You Like', layout)

while True:
    event, values = window.read()
    if event in (sg.WIN_CLOSED, 'Cancel'):
        break
        
    if event == 'Submit':
        #create list for checked colors
        selected_colors = [item for item in color_list if values[item]]
        break

print(selected_colors)

window.close()

我無法弄清楚的問題是雙重的:

  • 如果我的列表很長,就會出現問題——我希望將這個規模擴展到每行 4 或 5 個復選框項目,而不是一行包含所有內容。 我該怎么做呢?
  • 如何將 window 縮放到 window 的標題? 在這種情況下,由於選擇的長度,不會顯示 window 標題“選擇 Colors 你喜歡”。 我該如何解決這個問題,以便 window 縮放到標題大小?

如果我的列表很長,就會出現問題——我希望將這個規模擴展到每行 4 或 5 個復選框項目,而不是一行包含所有內容。 我該怎么做呢?

按照我的操作方式進行代碼演示。

import PySimpleGUI as sg

number = 9
column_layout, line = [], []
limit = len(sg.EMOJI_BASE64_HAPPY_LIST) - 1
for i, image in enumerate(sg.EMOJI_BASE64_HAPPY_LIST):
    line.append(sg.Image(data=image, size=(64, 64), pad=(1, 1), background_color='#10C000', expand_y=True, key=f'IMAGE {i}'))
    if i % number == number-1 or i == limit:
        column_layout.append(line)
        line = []

layout = [[sg.Column(column_layout)]]
sg.Window('Title', layout).read(close=True)

在此處輸入圖像描述

如何將 window 縮放到 window 的標題? 在這種情況下,由於選擇的長度,不會顯示 window 標題“選擇 Colors 你喜歡”。 我該如何解決這個問題,以便 window 縮放到標題大小?

您可以通過將選項size添加到 Checkbox 元素來實現,例如size=30在您的情況下。

在此處輸入圖像描述

暫無
暫無

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

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