PySimpleGUI creating Text with for loop



我想使用 for loop 和 PySimpleGUI 显示一些文本。 我有一个代码...

import PySimpleGUI as sg
teams = ["a","b","c","d"]
layout =  [
[sg.Text(teams[i]), sg.Radio('Pot A', "RADIO1", default=True),
sg.Radio('Pot B', "RADIO1")],
]
window = sg.Window('hey').Layout(layout)
button, values = window.Read()

而且因为我想避免硬编码,所以我想使用 for loop 为我创建更多的文本。 循环示例...

for i in range(len(teams)):
#create some text

我不知道在哪里插入我的循环以使其工作,或者是否有可能。

提前感谢!

不确定您希望如何显示团队列表。

无论如何,您都有很多选择来做到这一点。 最简单的一种是列表推导。

import PySimpleGUI as sg
teams = ["a","b","c","d"]
layout =  [[sg.Text(team) , sg.Radio('Pot A', "RADIO1"+team, default=True),
sg.Radio('Pot B', "RADIO1"+team)] for team in teams]
window = sg.Window('hey', layout)
button, values = window.read()

使用循环创建布局在 PySimpleGUI 文档中进行了描述: https://pysimplegui.readthedocs.io/en/latest/#generated-layouts-for-sure-want-to-read-if-you-have-5-repeating-elementsrows

对于新闻记者,您还可以在以下方向上创建一个循环:

fire = ['F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'F10']
col = [[sg.Text('Fire', background_color='red', size=sz)]]
# Create several similar fire buttons in the vertical column
for card in fire:
col += [
[sg.Button(card, key=card)]
]

最新更新