2

我正在尝试使用 PySimpleGUI 创建一个 GUI,其中包含许多复选框,并向右滚动以允许我四处移动。我希望我的 GUI 通过许多复选框来保持其大小。

这是我的代码:

form = sg.FlexForm("Dynamic Combo")
layout = [[sg.Text('<-- Enlazar Clientes con Páginas web -->')],
    [sg.Text('Dominio: ')], [sg.InputText()],
    [sg.Text('URL del Cliente: (con http:// o https://)')], [sg.InputText()],
    [sg.Button("SELECCIONAR TODOS")], 
    [sg.Checkbox("something")], [sg.Checkbox("something")],
    [sg.Checkbox("something")], [sg.Checkbox("something")],
    [sg.Checkbox("something")], [sg.Checkbox("something")],
    [sg.Checkbox("something")], [sg.Checkbox("something")],
    [sg.Checkbox("something")], [sg.Checkbox("something")],
    [sg.Checkbox("something")], [sg.Checkbox("something")],
    [sg.Checkbox("something")], [sg.Checkbox("something")],
    [sg.Checkbox("something")], [sg.Checkbox("something")],
    [sg.Checkbox("something")], [sg.Checkbox("something")],
    [sg.Checkbox("something")], [sg.Checkbox("something")],
    [sg.Checkbox("something")], [sg.Checkbox("something")],
    [sg.Checkbox("something")], [sg.Checkbox("something")],
    [sg.Checkbox("something")], [sg.Checkbox("something")],
    [sg.Text('')],
    [sg.Submit('Ejecutar'), sg.Cancel('Salir')]
]

form = sg.Window('Enlazador de Páginas Web').Layout(layout)

我该怎么做?我听说 sg.Column 允许我做类似的事情,但我已经尝试实现它,但我没有取得任何成就。

4

2 回答 2

4

您可以将布局放置在Column Element内以获得滚动条是正确的。

尝试将最后一行代码更改为此。它将使您的窗口更小并添加滚动条。阅读有关 Column 元素可用参数的更多信息。

form = sg.Window('Enlazador de Páginas Web').Layout([[sg.Column(layout, size=(300,300), scrollable=True)]])
form.Read()
于 2019-04-09T21:17:09.690 回答
0

这是我的代码,因为我已经进行了更正和改进。我希望它为您服务:

import PySimpleGUI as sg, sys

form = sg.FlexForm("Dynamic Combo")
col = [[sg.Checkbox("something1",key=1)], [sg.Checkbox("something2",key=2)],
    [sg.Checkbox("something3",key=3)], [sg.Checkbox("something4",key=4)],
    [sg.Checkbox("something5",key=5)], [sg.Checkbox("something6",key=6)],
    [sg.Checkbox("something7",key=7)], [sg.Checkbox("something8",key=8)],
    [sg.Checkbox("something9",key=9)], [sg.Checkbox("something10",key=10)],
    [sg.Checkbox("something11",key=11)], [sg.Checkbox("something12",key=12)],
    [sg.Checkbox("something13",key=13)], [sg.Checkbox("something14",key=14)],
    [sg.Checkbox("something15",key=15)], [sg.Checkbox("something16",key=16)],
    [sg.Checkbox("something17",key=17)], [sg.Checkbox("something18",key=18)]]
layout = [[sg.Text('<-- Scroll with Checkbox -->')],
    [sg.Button("SELECT ALL")], [sg.Button("DESELECT ALL")], 
    [sg.Column(col, size=(300,300), scrollable=True)],
    [sg.Cancel('Exit')]
]

form = sg.Window('Checkbox practice').Layout(layout)

while True:
    event, values = form.Read()
    if event == "SELECT ALL":  
        # IN THE RANGE ALWAYS PUT A NUMBER MORE TO GET THAT NUMBER
        for x in range(1,19):
            form.FindElement(x).Update(True)
    if event == "DESELECT ALL":  
         # IN THE RANGE ALWAYS PUT A NUMBER MORE TO GET THAT NUMBER
        for x in range(1,19):
            form.FindElement(x).Update(False)
    if event == "Exit":
        sys.exit()

我认为如果我有一个按钮来选择和取消选择所有内容,并且它的名称会根据我按下的内容而改变,那将是一个好主意。我正在研究它,虽然我还没有找到它。如果有人知道您发表评论,请。如果我学会这样做,我会上传答案。谢谢

于 2019-04-10T12:11:17.673 回答