tkinter新类不能使用.get()/ float()

时间:2018-02-02 05:13:29

标签: python tkinter tkinter-entry

我已定义了一个新的Entry子类:NewEntry,但它无法获取放入其中的数字。我该如何解决这个问题?

单击按钮时,显示错误消息:

ValueError: could not convert string to float:
from Tkinter import *
root = Tk()                                                                                                                              

class NewEntry(Entry):
    def __init__(self,parent,cusdef='1'):      #Initiation default number is '1'                                      
        Entry.__init__(self,parent)
        self.cusdef = cusdef
        v=StringVar()
        v.set(self.cusdef)
        self = Entry(self,textvariable=v)
        self.pack()
        return

def GetNum():
    a=e.get()
    print float(a)
    return

e = NewEntry(root)
e.pack(fill='x')

button = Button(root,command=GetNum)
button.pack(fill='x')
root.mainloop()

1 个答案:

答案 0 :(得分:0)

您似乎在尝试初始化Entry子类:

self = Entry(self,textvariable=v)
self.pack()

但相反,你只是覆盖名为self的变量并创建一个被丢弃的新Entry

相反,您需要使用正确的参数进行一次Entry.__init__调用:

class NewEntry(Entry):
    def __init__(self,parent,cusdef='1'):
        self.cusdef = cusdef
        v=StringVar()
        v.set(self.cusdef)
        Entry.__init__(self,parent, textvariable=v)
        self.pack()
        return