如何将tkinter条目转换为整数

时间:2016-05-18 17:37:51

标签: python tkinter integer tkinter-entry

我需要在方程式中使用GUI中的条目,并且在尝试将其转换为整数时始终会出错。我试图转换的变量标记为“radius。”

import math
import tkinter as tk

circ = tk.Tk()
circ.title("Circle")
circ.geometry("150x75")

radiusLabel = tk.Label(circ, text = "What is the radius?")
radiusEntry = tk.Entry(circ)

def close_window():
    circ.destroy()

radius = int(radiusEntry)

submit = tk.Button(circ, text = "Submit", command = close_window)

radiusLabel.pack()
radiusEntry.pack()
submit.pack()
circ.mainloop()

class Shape():
    def __init__(self, radius):
        self.circumference = float(2) * float(radius) * float(math.pi)
        self.area = float(math.pi) * float(radius*radius)

    def getArea(self):
        return self.area

    def getPerimeter(self):
        return self.circumference

    def __str__(self):
        return "Area: %s, Circumference: %s" % (self.area, self.circumference)

circle = Shape(radius)
print(circle)

2 个答案:

答案 0 :(得分:1)

U可以尝试此功能,对我有用

def cvtInt(value):
    fnum = []
    newnum = ''
    for i in value:
        ii = int(i)
        fnum.append(ii)
    for i in fnum:
        newnum = newnum + str(i)
    new = int(newnum)
    return new

答案 1 :(得分:0)

有三件事可以帮助你解决这个问题:

  1. 一般提示:在调试此类内容时,请使用print语句查看您是否获得了预期的信息。 radiusEntry总能给你一个数字吗?我的猜测可能不是。

  2. 我相信您应该使用radius = int(radiusEntry.get())来获取输入值

  3. 在将半径转换为int之前执行检查可能是最好的选择,并确保您实际上是在尝试转换数字。如果您尝试转换字母或无数据类型,可能会导致您的错误。您可以使用python isnumeric()方法检查字符串。

  4. 伪代码:

    If the radius entry is a number,
    
       convert the radius entry to an int