در اولین گام در ساخت اپلیکیشن گرافیکی با tkinter می بایست که بدنه اصلی برنامه را بسازیم و این کار نیازمند چند عملیات اولیه و 3 بخش اصلی خواهد بود.
اضافه کردن ماژول Tkinter
برای فراخوانی ماژول در کد خودتون می تونید از کد زیر اقدام نمایید.
from tkinter import *
نکته: البته باید در نظر داشته باشید که می توانید ماژول هایی که مورد نیازتون هستش رو به صورت تک تک صدا بزنید و ازشون استفاده کنید ولی من برای راحتی در این کار همگی آنها را فراخوانی خواهم کرد.
ساخت TK instance
ایجاد یک شئ یا Object و پنجره ای که قرار است مقادیر ویدجت ها را برای ما نگهداری و عملیات های دیگری رو برای ما انجام دهد.
window = Tk()
ایجاد Loop برای بدنه
و در نهایت ایجاد یک حلقه بی نهایت برای نگهداری و نمایش لحظه به لحظه صفحه که شامل تغییرات خواهد بود که با استفاده از متد زیر انجام می گیرد.
window.mainloop()
حال با ترکیب خطوط بالا می توانید به یک کد ساده برای ساخت یک صفحه گرافیکی با tk برسید که به شکل زیر خواهد بود. قطعه کد نمونه:
# Function Example
#importing tkinter library
from tkinter import *
#making a window
window = Tk()
#creating a loop for the main window to store the changes
window.mainloop()
# OOP Example
# importing tkinter modules
from tkinter import Tk
# inherianceing from Tk module and initializing the Tk class for creating object
class App(Tk):
def __init__(self):
Tk.__init__(self)
# creating the object of app for tk main window
if __name__ == "__main__":
app = App()
app.mainloop()
نمونه خروجی:
بسیار عالی! حال می خواهیم به این پنجره نامی را نیز اختصاص دهیم. اگر با مباحث شئ گرایی و متد ها آشنایی داشته به راحتی می توانید با استفاده از متدی که برای کلا TK در نظر گرفته شده است این کار را انجام دهید. متد Title می توانید با استفاده از متد title و همچنین دادن آرگومانی که نام آن پنجره خواهد بود اقدام به ایجاد پنجره ای با نام مخصوص کنید. در صورتی که این مورد را در برنامه تعیین نکنید ایرادی نخواهد بود و به صورت پیشفرض نام پنجره را tk در نظر خواهد گرفت. قطعه کد نمونه:
# Function Example
#importing tkinter library
from tkinter import *
#making a window
window = Tk()
window.title("icc-aria gui app")
#creating a loop for the main window to store the changes
window.mainloop()
# OOP Example
# importing tkinter modules
from tkinter import Tk
# inherianceing from Tk module and initializing the Tk class for creating object
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.title("icc-aria gui app")
# creating the object of app for tk main window
if __name__ == "__main__":
app = App()
app.mainloop()
نمونه خروجی:
نکته:اگر توجه داشته باشید من برای پنجره باز شده نام "icc-aria gui app" را در نظر گرفتم و در تصویر به وضوح این موضوع قابل مشاهده هستش.
تغییر سایز پنجره
شما می توانید با استفاده از متد های زیر اقدام به تغییر سایز پنجره نمایید. در صورتی که بدون در نظر گرفتن این مقادیر کد را اجرا کنید پنجره با کمترین سایز ممکن برای شما باز خواهد شد و می توانید در صورت نیاز سایز پنجره را متانسب با کار خود تغییر دهید.
#set the minimum size of window
window.minsize(400,300)
#set the maximum size of window
window.maxsize(640,450)
#set the default window size when opens
window.geometry('350x200')
اما ممکن است در بعضی شرایط نیاز شود تا پنجره به صورت غیر قابل تغییر و ایستا باشد که برای انجام این کار می توانید از متد resizeable برای مشخص کردن این مورد که توانایی تغییر از ناحیه عرض را دارد یا طول و یا هیچ کدام را تعیین کنید. آرگومان هایی که برای این متد فرستاده می شوند شامل width و height هستند که بیانگر طول و عرض پنجره برای قابلیت تغییر خواهند بود که به صورت بولین یا true و false مقدار دهی می شوند. مثال زیر پنجره مورد نظر را از لحاظ تغییر سایز در حالت طول و عرض غیر فعال می کند.
#making window unresizable
window.resizable(width=False, height=False)