python - 循环中的 Tkinter python 3.8 组合框。附加到列表时如何纠正错误的选择?
问题描述
我创建了一个组合框循环,并将我所做的选择附加到一个列表中。有 3 个组合框。列表必须有 3 个对应的元素。问题是,如果我在选择和替换选项时改变主意,列表(当然)会增加。在这段代码中,我有 3 个选项:'The One!'、'more or less'、'the bad'。我想在选择期间更改选项,但保持列表始终包含与组合框数量相对应的 3 个唯一元素。我一直在努力使用 set 但没有奏效,因为实际的循环很大。
我需要只有组合框 len 的列表,其结果对应于最后的选择,与我所做的选择更改的数量无关。
感谢您的任何帮助。
from tkinter import ttk
from tkinter import Tk
from tkinter import Button
root = Tk()
my_heroes = ['Zidane', 'Ronaldo', 'Messi']
position = ['The One!', 'more or less','the bad']
result =[]
def get_combo_choice(event, cmb):
result.append(cmb.get())
print(result)
for index, heroe in enumerate(my_heroes):
var = StringVar()
bestPlayers = ttk.Combobox(root,values=position, textvariable=var, state="readonly")
bestPlayers.grid(row=0 + index, column=1,padx=(15,25))
label = Label(root, text = heroe)
label.grid(row=0 + index, column=0,padx=(15,25))
bestPlayers.bind("<<ComboboxSelected>>",lambda event, cmb=var:get_combo_choice(event, cmb))
button = Button(root, text ="get list of choices", command = callback)
button.grid(row=4, column=0,padx=(15,25))
root.mainloop()
打印增长到三个,好的,但然后继续......我需要保持 list = combobox len 的大小并自由更新最后获得最后 3 个选择的值。
['唯一的那个!']
['那个!','或多或少']
['那个!','或多或少','坏的']
['那个!','或多或少','坏的','那个!']
['那个!','或多或少','坏','那个!','或多或少']
['那个!','或多或少','坏','那个!','或多或少','那个!']
['那个!','或多或少','坏','那个!','或多或少','那个!','或多或少']
['那个!','或多或少','坏','那个!','或多或少','那个!','或多或少','或多或少']
解决方案
您可以通过使用列表切片来限制列表长度。
def get_combo_choice(event, cmb):
global result
result.append(cmb.get())
# limit list len to 3 using ~2
result = result[~2:]
print(result)
为了控制result
列,需要将一些东西添加到您的代码中。
result =[None, None, None]
best = []
# Here's the alternative
def get_combo_choice(event, cmb):
i = best.index(event.widget)
result[i] = cmb.get()
print(result)
在 for\loop 内插入best.append(bestPlayers)
推荐阅读
- python - Window.screenshot 在 iOS 上返回黑屏
- spring-boot - zuul 为每个 eureka 服务 id 添加额外的前缀
- javascript - Window.prompt() 在 MS-Edge 扩展的后台脚本中不起作用
- javascript - HTTP 状态 403 - Ajax 请求被拒绝(会话已过期)
- magento - 在magento的所有页面中自定义页眉和页脚
- node.js - 如何使用多个 package.json 在 docker 上运行节点安装
- android - 运行后台服务一分钟后,工具栏上的 GPS 图标消失了
- curl - 使用非零代码 cURL 命令退出会产生 404 等
- windows - 在各种描述字符串中使用 NSIS 安装程序名称
- javafx - 防止表视图中第一列的重新排序?