我使用tkinter从用户那里获取x和y坐标列表。初始弹出窗口获取坐标的数量,然后创建具有正确数量的输入框的弹出窗口。
xcoord = []
ycoord = []
x = []
y = []
for i in range(numofcoordiantes):
xcoord[i] = ttk.Entry(mainframe, textvariable=x[i])
ycoord[i] = ttk.Entry(mainframe, textvariable=y[i])
ttk.Button(mainframe, text="OK", command=lambda: function(xcoord, ycoord))然而,当我尝试进行计算时,我得到了错误:
TypeError:-不支持的操作数类型:'Entry‘和'int’
如果我打印出协作者,它们看起来是这样的:
[<tkinter.ttk.Entry object at 0x03EDF9B0>, <tkinter.ttk.Entry object at 0x03EDFA30>, <tkinter.ttk.Entry object at 0x03EDFAB0>]
[<tkinter.ttk.Entry object at 0x03EDF9D0>, <tkinter.ttk.Entry object at 0x03EDFA50>, <tkinter.ttk.Entry object at 0x03EDFAD0>]我的其他输入框都没有出现这个问题,所以我不确定这是否是使用列表的结果。如果是这样的话,你能给我指个方向吗?
发布于 2015-08-18 07:07:34
您将在xcoord和ycoord中存储对entry小部件的引用,而不是存储entry小部件的值。您可以删除textvariable,并从entry小部件中获取值,如下所示:
x_coordinates = [int(widget.get()) for widget in xcoord]
y_coordinates = [int(widget.get()) for widget in ycoord]但是,如果其中任何一个小部件为空或其中包含非整数,您都会收到错误。您必须添加一些错误处理代码来处理此问题。
如果您不熟悉列表理解,那么上面的第一行代码就是这样的简写:
x_coordinates = []
for widget in xcoord: # for each widget in the list...
s = widget.get() # get string value
value = int(s) # convert to integer
x_coordinates.append(value) # append to the list of coordinateshttps://stackoverflow.com/questions/32060793
复制相似问题