我正在尝试创建一系列两个弹出窗口,第一个窗口将确定用户将输入的坐标数,第二个窗口将允许用户输入精确的坐标数
第一个弹出窗口的代码如下所示:
root = Tk()
root.title("User Inputs")
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
numofcoord = StringVar()
numofcoord = ttk.Entry(mainframe, width=7, textvariable=numofcoord)
numofcoord.grid(column=2, row=1, sticky=(W, E))
ttk.Button(mainframe, text="OK", command=user_coordinates).grid(column=1, row=2, sticky=W)
ttk.Button(mainframe, text="CANCEL", command=quit).grid(column=2, row=2, sticky=W)
ttk.Label(mainframe, text="Number of Coordinates").grid(column=1, row=1, sticky=W)
for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)
root.mainloop()
第一部分工作,但在第二部分,我的弹出窗口看起来像这样,行数由第一个弹出窗口中的输入决定
http://i.imgur.com/dToI2qX.png
第二部分的代码如下所示:
try:
noc = int(numofcoord.get())
root = Tk()
root.title("User Defined Coordinates")
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
x = StringVar()
y = StringVar()
ttk.Label(mainframe, text="X").grid(column=1, row=1, sticky=(W, E))
ttk.Label(mainframe, text="Y").grid(column=2, row=1, sticky=(W, E))
for i in range(2, noc + 2):
xcoord = ttk.Entry(mainframe, width=7, textvariable=x)
xcoord.grid(column=1, row=i, sticky=(W, E))
ycoord = ttk.Entry(mainframe, width=7, textvariable=y)
ycoord.grid(column=2, row=i, sticky=(W, E))
ttk.Button(mainframe, text="OK", command=test).grid(column=1, row=noc + 3, sticky=W)
ttk.Button(mainframe, text="CANCEL", command=quit).grid(column=2, row=noc + 3, sticky=W)
for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)
root.mainloop()
except ValueError:
pass
问题是,在中,当您在X或Y列中放置一个值时,该列中的每个框都将填充该值,我希望每行都是一组坐标
问题是所有的条目小部件共享相同的
StringVar
。您需要为每个条目小部件创建一个StringVar
的新实例。不过,您根本不需要使用StringVar
。您真正需要做的就是保留对每个条目小部件的引用例如:
稍后,您可以得到如下值:
您可以通过使用
StringVar
来做同样的事情,但在大多数情况下,这会增加复杂性,因为它会给您提供更多要管理的对象,但不会带来任何实际好处举个例子:
相关问题 更多 >
编程相关推荐