我正在尝试从列表中创建复选框。(biomelis_ = ['Arctic','Hill','Coast', 'Desert', 'Forest','Grassland', 'Mountain', 'Swamp', 'Underdark','Underwater', 'Urban' ]
)
然后我想勾选这些框并按“go”。我正试图使输出成为一个列表。例如,如果我选中“北极”、“丘陵”和“海岸”,我的输出将是['Arctic', 'Hill', 'Coast']
。我一直在阅读文档,但我正在努力解决这个问题
以下是完整的代码:
from tkinter import *
biomelis_ = ['Arctic', 'Hill', 'Coast', 'Desert', 'Forest', 'Grassland', 'Mountain', 'Swamp', 'Underdark', 'Underwater',
'Urban']
root = Tk()
var = StringVar()
# var.set(biomelis_ [0])
def sel():
biome_lis_selection = var.get()
print(biome_lis_selection)
return [biome_lis_selection]
for item in range(len(biomelis_)):
l = Checkbutton(root, text=biomelis_[item], variable=var)
print("l = Checkbutton(root, text=" + str(biomelis_[item]) + ", variable=" + str(var))
l.pack(anchor='w')
def go(): ### runs tkinter
biomes_Checklist = sel()
b.config(state=NORMAL)
b.delete('1.0', END)
b.insert(INSERT, sel())
b.config(state=DISABLED)
## defines go button. This launches the def go() when the go button is pressed.
go_button = Button(root, text="Go!", width=10, command=go)
go_button.pack()
b = Text(root)
b.pack()
root.mainloop()
这是我正在努力获取所选项目的部分
l = Checkbutton(root, text=biomelis_[item], variable=var)
这将返回“l”,而不是列表中的单个项。同时,所有复选框同时选中和取消选中
您可以将
onvalue
和offvalue
分配给选中按钮。如果将onvalue
设置为要检索的值,将off值设置为空字符串,则获取值变得非常简单我们要做的第一件事是扔掉使用
exec
的代码块。这根本没有必要。我们将在创建复选按钮的同时创建变量,并将它们附加到列表中其次,我们将直接在
biomelis_
上循环,并将onvalue
定义为与文本相同:因此,获取值只需迭代变量列表并保留非空字符串的值:
该循环可以简化为以下一行代码,但如果您刚开始使用python,则更难阅读:
在我的解决方案中,我将
BooleanVar
作为单独的Checkbutton
分配给每个Checkbutton
以分别保存每个小部件的当前状态(即“选中”或“未选中”),并将每个Checkbutton
保存在名为chkbtns
的列表中。这使得在其他函数中很容易引用它们这可以解决您的问题,但我认为有更安全、更好的方法:
顺便说一句,也许你不知道如何使用
variable
。read some documents相关问题 更多 >
编程相关推荐