2017-06-24 66 views
-1

我试图在tkinter的这个消息框中包含“mye”变量,但它不工作,我不断得到TypeError:不支持的操作数类型为+:'type'和'NoneType'。有人可以帮我吗?在tkMessageBox.showinfo中包含一个变量?

from tkinter import* 
from tkinter import messagebox as tkMessageBox 


mgui=Tk() 

def confirm(): 
     tkMessageBox.showinfo("Info","A confirmation has been sent to" + str(mye)) 

email=StringVar() 
e=str(email.get()) 

label4=Label(mgui,text="Please enter your email address", fg="black").grid(row=0,column=1,sticky=W) 
button3=Button(mgui,text="Confirm",command=confirm).grid(row=1,column=1) 

mye=Entry(mgui,textvariable=email).grid(row=6,column=1) 

mgui.mainloop() 
+2

如果你改成:'(“Info”,“确认已发送到”+ str(mye))'它工作吗? –

+0

错误没有出现,但显示的是框中显示的变量“None”而不是变量。 – vigilantis

+2

这将表明您的变量的值实际上没有值。作为一个测试,在确认函数的第一行如“hello world”中指定一些字符串值,并查看该值是否显示。如果是这样,你的变量没有被正确分配 –

回答

1

您需要首先创建Entry,然后再将其网格化到另一行上。在同一行上创建并网格化将始终返回None,因为当您想要分配创建的对象而不是Entry的实例化时,将grid函数的输出分配给变量。这个作品:

from tkinter import* 
from tkinter import messagebox as tkMessageBox 


mgui=Tk() 

def confirm(): 
     tkMessageBox.showinfo("Info","A confirmation has been sent to " + mye.get()) 
     #mye.get() returns contents of mye 

email=StringVar() 
e=str(email.get()) 

label4=Label(mgui,text="Please enter your email address", fg="black").grid(row=0,column=1,sticky=W) 
button3=Button(mgui,text="Confirm",command=confirm).grid(row=1,column=1) 

mye=Entry(mgui,textvariable=email) 
mye.grid(row=6,column=1) #Grid the entry on another line 

mgui.mainloop() 
相关问题