我最近发现了PySimpleGUI。当时看起来它可以帮我省下很多工作
我想使用PySimpleGUI作为界面为jpeg图像创建一个“标记器”
我在一个简单的python列表中有一长串标记词
我已经取得了一些成功,因为我可以创建一行复选框,但不能创建一列
我最初的研究发现了一个生成器,可以用来制作许多复选框。
我的目标是用列表生成的检查框填充3列
我发现这段代码是用来从这个PySimpleGUIpage.生成按钮的,然后对复选框进行了修改。我有工作函数,但无法将它们格式化为列
def CBtn(BoxText):
return sg.Checkbox(BoxText, size=(8, 1), default=False)
column2 = sg.Column([[sg.Text('User Id:')], [CBtn(Bx) for Bx in Tags1]])
#!/usr/bin/env python3
import PySimpleGUI as sg
sg.theme('Dark Red')
TaggerList = ["viking", "saddle", "beast", "ze", "princess", "vet", "art", "two", "hood", "mosaic",
"viking1", "saddle1", "beast1", "ze1", "princess1", "vet1", "art1", "two1", "hood1", "mosaic1"]
TaggerListLen = len(TaggerList)
Tags1 = TaggerList[:int(TaggerListLen/3)]
Tags2 = TaggerList[int(TaggerListLen/3):int(TaggerListLen/3*2)]
Tags3 = TaggerList[int(TaggerListLen/3*2):]
def CBtn(BoxText):
return sg.Checkbox(BoxText, size=(8, 1), default=False)
column2 = [[sg.Text('Column 2', justification='center', size=(10, 1))], [CBtn(Bx) for Bx in Tags2]]
column5 = sg.Column([[sg.Checkbox("BoxText1", size=(8, 1), default=False)],
[sg.Checkbox("BoxText2", size=(8, 1), default=False)],
[sg.Checkbox("BoxText3", size=(8, 1), default=False)],
[sg.Checkbox("BoxText4", size=(8, 1), default=False)]])
layout = [
[sg.Menu(menu_def, tearoff=True)],
[sg.Text('Image Tagger', size=(
30, 1), justification='center', font=("Helvetica", 25), relief=sg.RELIEF_RIDGE)],
[sg.Text('Your Folder', size=(15, 1), justification='right'),
sg.InputText('Default Folder'), sg.FolderBrowse()],
[sg.Column(column2)]
[column5]
window = sg.Window('Everything bagel', layout)
如屏幕截图所示,生成的复选框设置在一行而不是一列中。所以sg.Column(column2)
是一行。当我手动添加column5
的复选框时,我得到了一个正确的列
当我使用生成器定义时,我得到如下结果:[CBtn('1'), CBtn('2'), CBtn('3'), CBtn('log'), CBtn('ln'), CBtn('-')],
我在找这样的东西:[[CBtn('1')], [CBtn('2')], [CBtn('3')], [CBtn('log')], [CBtn('ln')], [CBtn('-')]],
这遵循手册第5列的格式
我已经尝试了生成器和def
的许多变体,但没有取得多大成功。
下面是我尝试实现上述格式的一个示例
column1 = [[sg.Text('Column 1', justification='center', size=(10, 1))], [BaseTag.append([CBtn(Bx)]) for Bx in Tags1]]
但是我得到了一个AttributeError:'NoneType'对象没有属性'ParentContainer'
这应该很容易。我想,我把框架弯曲得太厉害了。 PySimplegui看起来不错,但在几个小时的无人驾驶之后,我想知道
据我所知,大规模生产的对象只能在一个简单的循环。 对代码的修改:。 1.[[CBtn(i)]表示范围内的i(len(Tags2))] 2. '第2栏和第5栏分别更改为第2栏和第5栏。 3.在“布局”中添加,因为没有逗号或括号;第二栏]],第五栏]]
这几乎奏效了。我需要稍微更新一下发电机,以得到我想要的。 列只有数字。我需要添加关键字
修改代码:
然后用列表中的值填充该列。 现在来看看这个框架有多简单
相关问题 更多 >
编程相关推荐