अपने कोड को कम से कम संपादन (सुनिश्चित नहीं हैं कि अगर वे अपने पाठ्यक्रम में वर्गों सिखाया है या नहीं है), परिवर्तन के साथ
।
स्पष्टीकरण:
close_window
का संस्करण एक भी तर्क, अर्थात् root
की उम्मीद परिभाषित किया गया है। इसके बाद, close_window
के आपके संस्करण के लिए कोई भी कॉल उस तर्क की आवश्यकता है, या पायथन आपको रन-टाइम त्रुटि प्रदान करेगा।
जब आपने Button
बनाया था, तो आपने क्लिक किए जाने पर close_window
चलाने के लिए बटन को बताया था। हालांकि, बटन विजेट के लिए स्रोत कोड की तरह कुछ है:
# class constructor
def __init__(self, some_args, command, more_args):
#...
self.command = command
#...
# this method is called when the user clicks the button
def clicked(self):
#...
self.command() # Button calls your function with no arguments.
#...
मेरी कोड राज्यों के रूप में, Button
वर्ग कोई तर्क के साथ अपने कार्य को कॉल करेंगे। हालांकि आपका कार्य एक तर्क की उम्मीद कर रहा है। इस प्रकार आपको एक त्रुटि हुई।
def close_window():
root.destroy()
सही नहीं है यही कारण है कि, हालांकि, या तो, क्योंकि root
एक मूल्य सौंपा कभी नहीं किया गया है: तो, अगर हम चाहते हैं कि तर्क बाहर ले, ताकि समारोह कॉल बटन वर्ग के अंदर निष्पादित करेगा, हम साथ छोड़ रहे हैं।यह print(x)
में टाइपिंग की तरह होगा जब आपने x
को अभी तक परिभाषित नहीं किया है।
अपने कोड को देखते हुए, मैं तुम्हें window
पर destroy
फोन करना चाहता था लगा, तो मैं window
को root
बदल दिया है।
स्रोत
2012-04-03 05:42:05
हे मैट। स्पष्ट प्रश्न रखने के लिए धन्यवाद, और साथ में एक साफ और सरल कोड उदाहरण। क्या आप भविष्य में ट्रेसबैक (क्रैश) को भी शामिल कर सकते हैं जब आपका कोड "काम नहीं कर रहा है"? इससे लोगों को लगभग तुरंत पता चल जाएगा कि आपके कोड का कौन सा हिस्सा टूटा हुआ है। जाहिर है, इस मामले में, आपका कोड नमूना इतना छोटा है कि इसकी पहचान करना आसान हो, लेकिन यह वास्तव में कठिन स्थितियों पर भविष्य में जवाब पाने में आपकी सहायता कर सकता है। – jdi
किसी को भी तुरंत समस्या को देखने के लिए, त्रुटि 'TypeError: close_window() गायब 1 आवश्यक स्थितित्मक तर्क:' root'' है। इसका मतलब है कि कॉलबैक 'close_window' को कोई तर्क नहीं दिया गया था, क्योंकि' command = 'फ़ंक्शंस के लिए कभी भी नहीं है। बाउंड इवेंट कॉलबैक को तर्क मिलता है - ईवेंट ऑब्जेक्ट। –