python - 在 tkinter 的弹出窗口中动态创建条目小部件时出现问题
问题描述
我的目标是制作一个从 Entry 小部件中获取字符串的弹出窗口,小部件的数量由用户在主窗口上确定。因此,如果用户输入 5 个字段,则弹出窗口应该有 5 个 Entry 小部件以获取 5 个不同的字符串,如果用户输入 4,则弹出窗口有 4 个小部件,依此类推。使用这个问题的帮助,我编写了以下代码:
import tkinter as tk
root = tk.Tk()
root.title("Main Window")
class EntryButton(object):
def __init__(self, rootWin, numberEn):
self.number = numberEn
self.entry = tk.Entry(rootWin)
self.button = tk.Button(rootWin, text="test", command=self.on_click)
self.entry.grid(row=numberEn, column=0)
self.button.grid(row=numberEn, column=1)
self.value = None
def on_click(self):
self.value = self.entry.get()
def popup_window(numberOfEntries, storageDict):
window = tk.Toplevel()
window.title("Pop-Up Window")
dictionary = dict()
for i in range(0, numberOfEntries):
dictionary[i] = EntryButton(window, i)
storageDict = dictionary
numberVar = tk.IntVar()
tk.Label(root, text='Enter how many markers you are using:', font=('bold', 10)).grid(column= 0, row= 3)
tk.Entry(root, textvariable=numberVar).grid(column= 1, row=3)
number = numberVar.get()
mainStorage = dict()
initialPlotBtn = tk.Button(root, text='Start Labelling')
initialPlotBtn.config(command =lambda:
popup_window(numberOfEntries=number, storageDict=mainStorage)
)
initialPlotBtn.grid(column = 1, row = 4)
root.mainloop()
for key in mainStorage:
print(key, mainStorage[key])
我的主窗口如下所示: MainWindowImg。但是,一旦创建弹出窗口,它就会像这样显示为空: Pop-upWindowImg。
我才刚刚开始使用 tkinter,所以可能有些东西我没有到达这里。在 Windows 10 上使用 Python 3.8.3
解决方案
您使用 value ofnumber
作为参数popup_window()
但number
为零,因为它是在创建条目后立即分配的。
您应该numberVar.get()
改为使用作为参数:
initialPlotBtn.config(command =lambda:
popup_window(numberOfEntries=numberVar.get(), storageDict=mainStorage)
)
推荐阅读
- ios - 目标设置为 iOS 13 的 iOS 应用在 App Store 上不提供旧版本
- command-line-arguments - Flutter Driver - 我们可以将命令行参数传递给 Flutter 驱动程序测试吗
- python - Flask:如果字段不存在,则 current_app AttributeError
- amazon-web-services - SQS FIFO 如何确保只处理一次?
- pine-script - 为什么我的 label.new 函数只能返回几个月?
- perl - perl中参数太多的函数
- android - 似乎已设置 BLE 通知,但在 Android 上未收到任何通知
- c++ - 有没有办法对函数进行模板化,以便可以输入 N 维大括号初始值设定项列表?
- c# - 实体类型“AspNetUserLogins”需要定义主键吗?
- machine-learning - 自编码器应该是对称的吗?