首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tkinter中的用户输入是否存储为'Entry‘而不是'int'?

tkinter中的用户输入是否存储为'Entry‘而不是'int'?
EN

Stack Overflow用户
提问于 2015-08-18 06:35:22
回答 1查看 124关注 0票数 0

我使用tkinter从用户那里获取x和y坐标列表。初始弹出窗口获取坐标的数量,然后创建具有正确数量的输入框的弹出窗口。

代码语言:javascript
复制
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’

如果我打印出协作者,它们看起来是这样的:

代码语言:javascript
复制
[<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>]

我的其他输入框都没有出现这个问题,所以我不确定这是否是使用列表的结果。如果是这样的话,你能给我指个方向吗?

EN

回答 1

Stack Overflow用户

发布于 2015-08-18 07:07:34

您将在xcoordycoord中存储对entry小部件的引用,而不是存储entry小部件的值。您可以删除textvariable,并从entry小部件中获取值,如下所示:

代码语言:javascript
复制
x_coordinates = [int(widget.get()) for widget in xcoord]
y_coordinates = [int(widget.get()) for widget in ycoord]

但是,如果其中任何一个小部件为空或其中包含非整数,您都会收到错误。您必须添加一些错误处理代码来处理此问题。

如果您不熟悉列表理解,那么上面的第一行代码就是这样的简写:

代码语言:javascript
复制
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 coordinates
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32060793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档