मैं एक टिंकर ऐप बना रहा हूं। अभी के लिए मैं काम करने के लिए एक बहुत ही बुनियादी मेनूबार प्राप्त करना चाहता हूं, एक फ़ाइल अनुभाग के साथ, और उप मेनू में एक निकास बटन। यहां मेरा ऑब्जेक्ट ओरिएंटेड कोड है, जहां मैं गलत हो सकता हूं:

import tkinter as tk

class MainApplication(tk.Frame):
    def __init_(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent
        self.menubar = tk.Menu(self)
        self.filemenu = tk.Menu(self.menubar, tearoff=0)
        self.filemenu.add_command(label="Exit", command=self.quit)
        self.menubar.add_cascade(label="File", menu=self.filemenu)
        self.config(menu=self.menubar)

if __name__ == "__main__":
    root = tk.Tk()
    MainApplication(root).pack(side="top", fill="both", expand=True)
    root.mainloop()

हालाँकि, यह केवल एक खाली टिंकर विंडो बनाता है। यह आमतौर पर मेरे लिए काम करता है जब मैं प्रक्रियात्मक प्रोग्रामिंग का उपयोग करता हूं इसलिए मुझे लगता है कि मैं ओओपी के साथ कुछ गलत कर रहा हूं। मैं self.config() को root.config() के रूप में कहने की कोशिश कर रहा हूं, लेकिन यह काम नहीं करता है।

1
Faizan Shah 25 नवम्बर 2020, 19:55

1 उत्तर

सबसे बढ़िया उत्तर

वहां 2 बड़े मुद्दे। पहला यह है कि आपने __init__ की गलत वर्तनी की है, इसलिए आपका कोई भी कस्टम कोड नहीं चलाया जा रहा है। दूसरा यह है कि आपको मेनू को रूट विंडो, उर्फ ​​self.master (डिफ़ॉल्ट नाम) या self.parent (आपका नाम) पर लागू करने की आवश्यकता है। इस तरह प्रयास करें:

import tkinter as tk

class MainApplication(tk.Frame):
    def __init__(self, master=None, **kwargs):
        super().__init__(master, **kwargs)
        self.menubar = tk.Menu(self)
        self.filemenu = tk.Menu(self.menubar, tearoff=0)
        self.filemenu.add_command(label="Exit", command=self.quit)
        self.menubar.add_cascade(label="File", menu=self.filemenu)
        self.master.config(menu=self.menubar)

if __name__ == "__main__":
    root = tk.Tk()
    root.geometry('200x200') # remove once you've added window content
    win = MainApplication(root)
    win.pack(side="top", fill="both", expand=True)
    root.mainloop()

मैंने आपको एक पायथन 3 विरासत शैली में भी स्थानांतरित कर दिया है, और एक आकार परिभाषित किया है ताकि आप वास्तव में कुछ देख सकें।

1
Novel 25 नवम्बर 2020, 19:06