请注意,我在这个主题上也提到过类似的相关答案
1)有什么情况,StringVar()/ IntVar()会返回空白/ 0值resp。?
2)下面是我应用于我的应用程序中的一个功能的代码的较小部分。请告诉我我的代码中缺少什么来检索预期的输出。
from tkinter import *
class App(Frame):
def __init__(self,master):
Frame.__init__(self,master)
self.pack()
Label(self,text="Choose timer options:").pack()
self.delayvar = IntVar()
self.delayradio1 = Radiobutton(self,text="Hours",variable=self.delayvar,value=1,command=self.delayfunc)
self.delayradio1.pack()
self.delayradio2 = Radiobutton(self,text="Minutes",variable=self.delayvar,value=2,command=self.delayfunc)
self.delayradio2.pack()
self.delayradio3 = Radiobutton(self,text="Seconds",variable=self.delayvar,value=3,command=self.delayfunc)
self.delayradio3.pack()
def delayfunc(self):
self.delayvarvalue = self.delayvar.get()
self.delayentryvar = StringVar() # or IntVar()
self.delayent = Entry(self,textvariable=self.delayentryvar)
self.delayent.pack()
if self.delayvarvalue == 1:
Button(self,text="save delay",command=self.delayfunc1).pack()
self.delayentry = self.delayent.get() #self.delayentryvar.get()
print(self.delayentry)
def delayfunc1(self):
self.delval = Text(self,height=1, width=10)
self.delval.pack()
self.delval.insert(END,self.delayentry)
if __name__ == '__main__' :
root = Tk()
App(root)
root.title("Delay Timer")
root.geometry("200x200")
root.mainloop()
答案 0 :(得分:1)
- "有哪些案例,
醇>StringVar()
/IntVar()
会返回空白/ 0值?"
首先,通过返回,我必须假设你的意思是get
方法返回它们,因为如果没有,答案 总是和从不(它们总是返回可能会分别变化,因为它们理想地是各个类的对象,或者它们不能这样做在这种情况下,我怀疑他们返回None
并且不等于0
)None
。
两个get
方法的案例返回相应的值是相同的,它们从未设置(''
和{{1} }是他们的默认值)或他们明确设置为默认值。
- 以下是我应用于我的应用中的一个功能的代码的较小部分。请告诉我我的代码中缺少什么来检索预期的输出。
醇>
对我来说,你的预期输出是什么并不明显,但我可以指出某些的代码方面看起来很麻烦。
0
完全按照应有的方式实例化并且正常工作,而:
self.delayvar
目前没有用处,完全多余。这主要是因为self.delayentryvar
对象已经有Entry
方法与get
对象的方法完全相同,因此如果这是需要的核心StringVar
,然后没有用。
StringVar
和
self.delayent.get()
实际上与上面解释的相同,并且提供的代码OP将始终返回self.delayentryvar.get()
。这是因为它们是几乎在不久之前首次创建的''
对象的当前值的返回值。 条目也不是Entry
任何内容,因此它们会返回insert
或None
。
添加:
''
在self.delayent.insert('end', 'TEST')
之内的某个地方之前:
delayfunc
更好地了解正在发生的事情。