如何将字符串转为PySimpleGUI.Text对象并动态生成GUI布局?
基于字典动态生成PySimpleGUI布局
需求
现有PySimpleGUI布局结构如下:
thing1 value1 (inputbox1) thing2 value2 (inputbox2) thing3 value3 (inputbox3)
其中inputbox#是用户输入框,thing#和value#为普通文本。需要从字典中取值,通过循环动态生成布局,以适配字典条目数量变化带来的布局行数变化。
尝试过程中的疑问
曾尝试将字符串数据转换后添加到col中,查看col的内部数据类型:
col=[ [sg.Text('john')], sg.Text('john'), ]
布局中使用该列:
[sg.Column(col,size=(1420,600),scrollable=True)],
打印后发现:
col[0]是[<PySimpleGUI.PySimpleGUI.Text object at 00x00000298BA1A67A0>],类型为listcol[1]是<PySimpleGUI.PySimpleGUI.Text object at 00x00000298BA1A5E70>,类型为PySimpleGUI.PySimpleGUI.Text
疑问:能否将字符串数据直接转换为PySimpleGUI.PySimpleGUI.Text对象?有没有更优的实现方式?
解决方法(更新)
最终使用列表推导式实现了需求,布局代码如下:
[[sg.Text(dict[globproj][f'Cost{i}'])] for i in range(1,amt_cost)],
其中amt_cost为字典中对应条目的数量,Cost{i}是字典中存储价格的键。
该方法可行的原因:PySimpleGUI的布局本质是嵌套列表结构,无法直接在布局中写入循环语句,但列表推导式本身会生成一个符合要求的列表,可直接作为布局的一部分被识别。
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

