PySimpleGUI 循环需要更好的方法
PySimpleGUI loop need better way
我尝试使用 PySimpleGUIQt 在 PySimpleGUI 中循环一些元素
这是代码:
list_1 = ['a', 'b', 'c', 'd']
list_2 = ['e', 'f', 'g', 'h']
layout = [[Sg.Column([[Sg.Input(do_not_clear=True, size=(20, 0.7), enable_events=True, key=f'G_INPUT0{j}'), Sg.Column([[Sg.Input(do_not_clear=True, size=(14, 0.7), enable_events=True, key=f'INPUT{i}{j}') for i in range(9)]])],[Sg.Listbox(list_1, size=(20, 0.7), enable_events=True, key=f'G_LIST0{j}'), Sg.Column([[Sg.Listbox(list_1, size=(14, 0.7), enable_events=True, key=f'LIST{i}{j}')for i in range(9)]])],[Sg.Text(' G: ', size=(20, 0.7), key=f'G_TEXT{j}'), Sg.Column([[Sg.Text(f' T{i}: ', size=(14, 0.7), key=f'TEXT{i}{j}')for i in range(9)]])]])]for j in range(3)]
window = Sg.Window('Sample GUI', layout, finalize=True)
while True:
event, values = window.Read()
print(event)
print(values)
输出:
问题是,如果我想添加新循环,我需要添加 Sg.Column
,这会产生额外的 space,并再添加一个循环,但我不想使用 Sg.Column
所以谁能告诉我我可以获得类似于此结果的修复 使用 ms paint
示例代码没有任何 sg.Column
import PySimpleGUIQt as Sg
list_1 = ['a', 'b', 'c', 'd']
list_2 = ['e', 'f', 'g', 'h']
layout = []
for j in range(3):
layout += [
[Sg.Checkbox("Some text", pad=(3, 20))],
[Sg.Input(do_not_clear=True, size=(20, 0.7), enable_events=True, key=f'G_INPUT0{j}')] +
[Sg.Input(do_not_clear=True, size=(14, 0.7), enable_events=True, key=f'INPUT{i}{j}') for i in range(9)],
[Sg.Listbox(list_1, size=(20, 0.7), enable_events=True, key=f'G_LIST0{j}')] +
[Sg.Listbox(list_1, size=(14, 0.7), enable_events=True, key=f'LIST{i}{j}') for i in range(9)],
[Sg.Text(' G: ', size=(20, 0.7), key=f'G_TEXT{j}')] +
[Sg.Text(f' T{i}: ', size=(14, 0.7), key=f'TEXT{i}{j}') for i in range(9)]
]
window = Sg.Window('Sample GUI', layout, finalize=True)
while True:
event, values = window.read()
if event == Sg.WINDOW_CLOSED:
break
print(event, values)
window.close()
我尝试使用 PySimpleGUIQt 在 PySimpleGUI 中循环一些元素 这是代码:
list_1 = ['a', 'b', 'c', 'd']
list_2 = ['e', 'f', 'g', 'h']
layout = [[Sg.Column([[Sg.Input(do_not_clear=True, size=(20, 0.7), enable_events=True, key=f'G_INPUT0{j}'), Sg.Column([[Sg.Input(do_not_clear=True, size=(14, 0.7), enable_events=True, key=f'INPUT{i}{j}') for i in range(9)]])],[Sg.Listbox(list_1, size=(20, 0.7), enable_events=True, key=f'G_LIST0{j}'), Sg.Column([[Sg.Listbox(list_1, size=(14, 0.7), enable_events=True, key=f'LIST{i}{j}')for i in range(9)]])],[Sg.Text(' G: ', size=(20, 0.7), key=f'G_TEXT{j}'), Sg.Column([[Sg.Text(f' T{i}: ', size=(14, 0.7), key=f'TEXT{i}{j}')for i in range(9)]])]])]for j in range(3)]
window = Sg.Window('Sample GUI', layout, finalize=True)
while True:
event, values = window.Read()
print(event)
print(values)
输出:Sg.Column
,这会产生额外的 space,并再添加一个循环,但我不想使用 Sg.Column
所以谁能告诉我我可以获得类似于此结果的修复
示例代码没有任何 sg.Column
import PySimpleGUIQt as Sg
list_1 = ['a', 'b', 'c', 'd']
list_2 = ['e', 'f', 'g', 'h']
layout = []
for j in range(3):
layout += [
[Sg.Checkbox("Some text", pad=(3, 20))],
[Sg.Input(do_not_clear=True, size=(20, 0.7), enable_events=True, key=f'G_INPUT0{j}')] +
[Sg.Input(do_not_clear=True, size=(14, 0.7), enable_events=True, key=f'INPUT{i}{j}') for i in range(9)],
[Sg.Listbox(list_1, size=(20, 0.7), enable_events=True, key=f'G_LIST0{j}')] +
[Sg.Listbox(list_1, size=(14, 0.7), enable_events=True, key=f'LIST{i}{j}') for i in range(9)],
[Sg.Text(' G: ', size=(20, 0.7), key=f'G_TEXT{j}')] +
[Sg.Text(f' T{i}: ', size=(14, 0.7), key=f'TEXT{i}{j}') for i in range(9)]
]
window = Sg.Window('Sample GUI', layout, finalize=True)
while True:
event, values = window.read()
if event == Sg.WINDOW_CLOSED:
break
print(event, values)
window.close()