python - 每次在 Tkinter 中按下按钮时如何添加组合框?
问题描述
我想构建 GUI,每次按下按钮时 Combobox 都会添加一个按钮。但我不知道如何计算或编码这个概念
而且,还有其他小部件吗?还是有其他方法来建立我的概念?请有人帮我..
不使用 tkinter 的主要概念如下所示。我希望在 Tkinter 中制作这个概念。
[这是我尝试过的,但是当我按下按钮时,所有添加的组合框都可以一起工作(这意味着当我更改列表名称时,所有组合框也会更改..)]
def Plus_EXT():
button_plus = Button(window3,justify = CENTER,command = Add_EXT, text= "+")
button_plus.grid(row=0,column=0)
def Add_EXT():
global Num
window3.update()
Num += 1
CEList1 = [x for x in os.listdir(cur_dir) if ('CE' in x.upper()) and ('.rpt' in x)]
RPT_EXT_file=ttk.Combobox(window3, values=CEList1,textvariable= EXT_String)
RPT_EXT_file.grid(row=8+Num,column=1)
RPT_EXT_file.set("FILE")
[不使用 TKINTER 的主要概念]
CE_Num= int(input("How Many EXTRA Chordae?: "))
User_File = input("Type the New File Name: ")
for Num_Of_EXT in range(CE_Num):
RPT_EXT_file = input("Type the RPT of EXTRA CHORDAE: ") + ".rpt"
EXTRA(User_File,RPT_EXT_file,Num_Of_EXT)
EXTRA_PLT(User_File,Num_Of_EXT)
我想要的输出是{每次我按下按钮时都会在框架中添加一个新的组合框,其中的列表单独工作。}
解决方案
问题是您的所有 Combobox 小部件都与名为 . 的相同文本变量链接。因此EXT_String
,当您更改一个 Combobox 小部件的值时,它会更新所有这些小部件中的相同值。
我建议保留这些变量的列表,并NUM
在循环中使用该列表来分配文本变量。
更新:
只是一个基于Add_EXT
方法中共享的有限代码的示例:
global var_list
var_list.append(IntVar()) #Or StringVar(), whatever you are using
RPT_EXT_file=ttk.Combobox(window3, values=CEList1,textvariable=var_list[-1])
推荐阅读
- python - 我的 Viber 机器人工作速度很慢(Python)我怎样才能让它更快
- javascript - 使 Chrome 扩展 javascript 文档适用于打开网页,而不是弹出
- javascript - 如何为 LightningChartJs 启用默认浏览器滚动行为?
- node.js - "message": "ENOENT: 没有这样的文件或目录,打开 'E:\\astrology\\utils\\uploads\\1600798534862qf.png'"
- reactjs - 部署在heroku上的反应项目是空白的
- mongodb - mongoDB mapReduce 中的 finalize 函数是否并行处理不同的键?
- java - DateTimeFormatter 不使用阿拉伯语或孟加拉语的本地数字
- python - 如何从新的 Twitter 的 API 中获取 3200 条推文以及 GetOldTweets3 替代方案是什么?
- r - 是否有用于绘制竞争风险的加权 (IPTW) 累积发生率曲线的 R 函数?
- reactjs - 确认浏览器后退按钮