2009-07-09 19 views
23

मैंने इसी तरह के त्रुटि संदेश पर कुछ अन्य पोस्ट देखी हैं लेकिन मुझे कोई समाधान नहीं मिला जो मेरे मामले में इसे ठीक करेगा।टिंकर: विशेषताइंटर: कोई नहीं टाइप ऑब्जेक्ट में कोई विशेषता नहीं है

मैंने TkInter के साथ थोड़ा सा डब किया और एक बहुत ही सरल यूआई बनाया। कोड निम्नानुसार है-

from string import * 
from Tkinter import * 
import tkMessageBox 

root=Tk() 
vid = IntVar() 

def grabText(event): 
    if entryBox.get().strip()=="": 
     tkMessageBox.showerror("Error", "Please enter text") 
    else: 
     print entryBox.get().strip()  

root.title("My Sample") 
root.maxsize(width=550, height=200) 
root.minsize(width=550, height=200) 
root.resizable(width=NO, height=NO)  

label=Label(root, text = "Enter text:").grid(row=2,column=0,sticky=W) 
entryBox=Entry(root,width=60).grid(row=2, column=1,sticky=W) 
grabBtn=Button(root, text="Grab") 
grabBtn.grid(row=8, column=1) 
grabBtn.bind('<Button-1>', grabText) 

root.mainloop() 

मुझे यूआई ऊपर और चल रहा है। जब मैं Grab बटन पर क्लिक करें, मैं कंसोल पर निम्नलिखित त्रुटि मिलती है:

C:\Python25>python.exe myFiles\testBed.py 
Exception in Tkinter callback 
Traceback (most recent call last): 
    File "C:\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__ 
    return self.func(*args) 
    File "myFiles\testBed.py", line 10, in grabText 
    if entryBox.get().strip()=="": 
AttributeError: 'NoneType' object has no attribute 'get' 

त्रुटि Tkinter.py वापस करने के लिए बताते हैं।

मुझे यकीन है कि किसी ने इससे पहले इसका सामना किया होगा। किसी भी मदद की सराहना की है।

+0

अधिक जानकारी [** यहां **] (https://www.begueradj.com/tkinter-saya-idiom.html) –

उत्तर

50

Entry वस्तु (और अन्य सभी विजेट की) की grid (और pack, और place) फ़ंक्शन None। पाइथन में जब आप a().b() करते हैं, तो अभिव्यक्ति का परिणाम जो भी b() रिटर्न होता है, इसलिए Entry(...).grid(...)None वापस आ जाएगा।

आप दो पंक्तियों पर विभाजित करना चाहिए कि, इस तरह:

entryBox = Entry(root, width=60) 
entryBox.grid(row=2, column=1, sticky=W) 

इस तरह, आप अपने Entry संदर्भ entryBox में संग्रहीत मिलता है, और यह बाहर रखी है जैसे आप उम्मीद करते हैं। यदि आप अपने सभी grid और/या pack ब्लॉक में कथन एकत्र करते हैं, तो आपके लेआउट को समझने और बनाए रखने के लिए इसका बोनस साइड इफेक्ट होता है। इस लाइन

3

बदलें:

entryBox=Entry(root,width=60).grid(row=2, column=1,sticky=W) 
इन दो पंक्तियों में

:

entryBox=Entry(root,width=60) 
entryBox.grid(row=2, column=1,sticky=W) 

उसी तरह से label के लिए चला जाता है - आप पहले से ही सही ढंग से grabBtn के लिए करते हैं बस के रूप में!

+0

धन्यवाद एलेक्स। मैंने उसके बारे में सोचा होता :-) – Arnkrishn

संबंधित मुद्दे

 संबंधित मुद्दे