আমি একটি অবজেক্ট অরিয়েন্টেড পদ্ধতির পক্ষে। এটি যে টেম্পলেটটি দিয়ে আমি শুরু করি:
# Use Tkinter for python 2, tkinter for python 3
import tkinter as tk
class MainApplication(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.parent = parent
<create the rest of your GUI here>
if __name__ == "__main__":
root = tk.Tk()
MainApplication(root).pack(side="top", fill="both", expand=True)
root.mainloop()
গুরুত্বপূর্ণ বিষয়গুলি লক্ষ্য করুন:
আমি কোনও ওয়াইল্ডকার্ড আমদানি করি না। আমি "tk" হিসাবে প্যাকেজটি আমদানি করি, এর জন্য আমার সমস্ত কমান্ডের সাথে উপসর্গ করা দরকার tk.
। এটি বিশ্বব্যাপী নেমস্পেস দূষণকে বাধা দেয়, এছাড়াও আপনি কোডিন্টার ক্লাস, ttk ক্লাস বা আপনার নিজের কিছু ব্যবহার করার সময় কোডটি পুরোপুরি স্পষ্ট করে তোলে।
মূল প্রয়োগটি একটি শ্রেণি । এটি আপনাকে আপনার সমস্ত কলব্যাক এবং ব্যক্তিগত ফাংশনের জন্য একটি ব্যক্তিগত নেমস্পেস দেয় এবং কেবল আপনার কোডটি সংগঠিত করা সহজ করে তোলে। একটি পদ্ধতিগত শৈলীতে আপনাকে শীর্ষ-কোড কোড করতে হবে, তাদের ব্যবহারের পূর্বে ফাংশনগুলি সংজ্ঞায়িত করতে হবে ইত্যাদি method এই পদ্ধতিতে আপনি যেহেতু আসলেই শেষ পর্বটি না হওয়া পর্যন্ত মূল উইন্ডোটি তৈরি করেন না। আমি উত্তরাধিকার সূত্রে পছন্দ করি tk.Frame
কারণ আমি সাধারণত একটি ফ্রেম তৈরি করে শুরু করি তবে এটি কোনওভাবেই প্রয়োজন হয় না।
যদি আপনার অ্যাপ্লিকেশনটিতে অতিরিক্ত শীর্ষ স্তরের উইন্ডোজ থাকে তবে আমি তাদের প্রত্যেককে পৃথক শ্রেণি তৈরি করার পরামর্শ দিচ্ছি, যা উত্তরাধিকার সূত্রে প্রাপ্ত tk.Toplevel
। এটি আপনাকে উপরে উল্লিখিত একই সুবিধাগুলির সমস্ত দেয় - উইন্ডোগুলি পারমাণবিক, তাদের নিজস্ব নাম স্থান রয়েছে এবং কোডটি সুসংহত। এছাড়াও, কোডটি বড় হতে শুরু করলে প্রতিটি তার নিজস্ব মডিউলে রেখে দেওয়া সহজ করে তোলে।
শেষ অবধি, আপনি আপনার ইন্টারফেসের প্রতিটি বড় অংশের জন্য ক্লাস ব্যবহার বিবেচনা করতে চাইতে পারেন। উদাহরণস্বরূপ, আপনি যদি একটি সরঞ্জামদণ্ড, একটি নেভিগেশন ফলক, একটি স্ট্যাটাসবার এবং একটি প্রধান অঞ্চল দিয়ে একটি অ্যাপ তৈরি করে থাকেন তবে আপনি those শ্রেণির প্রত্যেকটিকে তৈরি করতে পারেন। এটি আপনার মূল কোডটিকে বেশ ছোট এবং সহজে বুঝতে সহজ করে তোলে:
class Navbar(tk.Frame): ...
class Toolbar(tk.Frame): ...
class Statusbar(tk.Frame): ...
class Main(tk.Frame): ...
class MainApplication(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.statusbar = Statusbar(self, ...)
self.toolbar = Toolbar(self, ...)
self.navbar = Navbar(self, ...)
self.main = Main(self, ...)
self.statusbar.pack(side="bottom", fill="x")
self.toolbar.pack(side="top", fill="x")
self.navbar.pack(side="left", fill="y")
self.main.pack(side="right", fill="both", expand=True)
যেহেতু এই সমস্ত উদাহরণ একটি সাধারণ পিতামাতাকে ভাগ করে, তাই পিতামাতারা কার্যকরভাবে একটি মডেল-ভিউ-কন্ট্রোলার আর্কিটেকচারের "নিয়ামক" অংশে পরিণত হন। সুতরাং, উদাহরণস্বরূপ, মূল উইন্ডোটি কল করে স্ট্যাটাসবারে কিছু রাখতে পারে self.parent.statusbar.set("Hello, world")
। এটি আপনাকে উপাদানগুলির মধ্যে একটি সহজ ইন্টারফেস সংজ্ঞায়িত করতে সহায়তা করে, মিনিমুনে সংযোগ স্থাপনে সহায়তা করে।