ساخت یک کلید یا button
حال که با ساخت پنجره و ایجاد برچسب در صفحه آشنا شده این می بایست که سطح کار را بالا تر ببریم و تعامل با کاربر را نیز ایجاد کنیم. برای این کار از ساده ترین موردی که می توان مثال زد شروع می کنیم. ساخت کلید یا دکمه (button) این کلید می تواند برای انجام عملیات های زیادی در نظر گرفته شود از جمله اجرا عملیات های ساده برای گرفتن خروجی و یا حتی روشن و خاموش کردن المان های همان صفحه و یا اتصال آن برای اجرا اسکریپت هایی که خودتون به هر زبانی می نویسید.
کلید یا Button
برای ساخت کلید می توان از تابع button استفاده کرد، این تابع دو آرگومان ورودی را شامل خواهد شد که اولی پنجره ای است که این کلید می خواهد در آن تشکیل شود و آرگومان دوم شامل تنظیماتی خواهد بود که برای این کلید در نظر می گیرید که شامل نام تغییرات ظاهری و عملکرد هایی است که انتظار می رود پس از تغییر وضعیت کلید صورت بگیرد.مثال زیر یک صفحه با کلیدی بسیار ساده در آن را به شما نشان خواهد داد. آرگومان هایی که می توانید برای صفت های هر کدام از کلید ها برای آن تخصیص دهید:
- text برای ایجاد یک برچسب بر روی کلید مورد نظر
- bg برای ایجاد رنگ پیش زمینه کلید مورد نظر
- fg برای ایجاد رنگ بر روی نوشته ای که بر روی کلید قرار گرفته
- command برای اتصال کلید به یک تابع و یا عملیاتی کی می خواهید پس از فرشدن کلید به آن رجوع کند
- state برای ایجاد وضعیت اولیه که شامل 3 پارامتر active و normal و disabled میشه
نمونه کد:
#importing modules
from tkinter import *
#making a window instance
window = Tk()
#creating a title for window
window.title("icc-aria gui app")
#making a button inside the window and packing it
Button(window, text="Click Me").pack()
#making a loop for the window to run
window.mainloop()
# importing tkinter modules
from tkinter import Tk,Button
# 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")
#making a button inside the window and packing it
Button(self, text="Click Me").pack()
# creating the object of app for tk main window
if __name__ == "__main__":
app = App()
app.mainloop()
نمونه خروجی:
اما ایجاد تغییرات فقط شامل زمان ساخت نمی شود و در هر لحظه می توان این تنظیمات کلید را تغییر داد به عنوان مثال می خواهیم این تغییرات را با استفاده از متد configure بعد از ایجاد کلید در آن ایجاد کنیم. برای این کار ابتدا کلید را تعریف و آن را به عنوان یک object درون متغیری می ریزیم و تنظیمات لازم را بر روی آن انجام می دهیم. به مثال زیر توجه کنید. نمونه کد:
#importing modules
from tkinter import *
#making a window instance
window = Tk()
#creating a title for window
window.title("icc-aria gui app")
#making a button inside the window
btn = Button(window)
#configuring the button
btn.configure(text="Click Me",bg="yellow",fg="red")
#packing the button to insert in window
btn.pack()
#making a loop for the window to run
window.mainloop()
# importing tkinter modules
from tkinter import Tk,Button
# 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")
#making a button inside the window and packing it
self.btn = Button(self)
#configuring the button
self.btn.configure(text="Click Me",bg="yellow",fg="red")
#packing the button to insert in window
self.btn.pack()
# creating the object of app for tk main window
if __name__ == "__main__":
app = App()
app.mainloop()
نمونه خروجی:
سلام
ببخشید من میخوام یه برنامه بنویسم که وقتی اجرا میشه یک تایمر(شمارش گر معکوس) شروع کنه به شمارش و بعد وقتی تمام شد یه تایمر دیگه با مقدار کمتر شروع بشه و این کار تکرار بشه تا وقتی که دیگه خودم متوقفش بکنم
مثل این سایت
https://app.mypomodoro.ir/
می خوای صرفا شمارش گر رو توی کنسول ببینید یا توی صفحه وب چون اون با js هستش
سلام ممنونم از جوابتون بله توی توی وب میخوام ببینم البته یه چیزی نوشتم ولی کامل نیست چون بنده خیلی مبتدی هستم اگه راهنمایی کنید ممنون میشم با تشکر
برای شروع آموزش flask ببین
سلام ممنونم از لطفتون
سلام یه سوال من یه دکمه ریپیت(شروع مجدد) درست کردم و میخوام با زدن این دکمه برنامه از صفر دوباره اجرا بشه که نخوایم هی ببندیم دوباره باز کنیم .کامندی میشناسید که کار ریپیت رو انجام بده
ممنون
نمی دونم دقیقا چی نوشتید ولی در کل می تونید کلیدی طراحی کنین که آبجکت اصلی رو پاک و مجدد ایجاد کنه
با تشکر یه سوال دیگه اینکه رنگ اصلی زمینه رو چجوری میشه تفییر داد یا عکس بذاری برای پس زمینه و اصلا کلا با چه چیزی میشه عکس اضافه کرد.
با سپاس فراوان
میبایست برای رنگ زمینه یا عکس یه config به فریم اصلی ایجاد شده بدید البته توصیه نمی کنم از تصاویر استفاده کنین
سلام دو تا سوال اول اینکه اندازه فونت نوشته داخل کلید رو میشه بزرگ تر کرد یا نه و دوم میشه مثلا دکمه مربعی یا دایره ای ساخت؟
اگه واقعا قیافه براتون مهم میشه بهتره متد های جدید رو استفاده کنین
https://github.com/ParthJadhav/Tkinter-Designer
سلام اقا بیگدلی واقعا تا اینجا یکی از بهترین درس های پایتونی بود که دیده بودم ممنون از دوره عالیتان
خواهش می کنم امیدوارم مفید بوده باشه
دمتون گرم که رایگان درس میدید
امیدوارم مفید واقع بشه
دمت گرم عالی درس میدید
متشکر نظر لطفتونه
از اموزش هاتون سیار متشکرم
خواهش می کنم امیدوارم مفید واقع شده باشن
چطوری باید جای دکمه رو تغیر بدیم؟
بخش grid و pack رو مشاهده کنین دوست عزیز
سلام عرض میکند خدمت شما اقای بیگدلی خیلی ممنون از مطالب جذابتون.
میخواستم بدونم اگر بخوایم رشته ها رو به صورت فارسی بنویسیم احتیاج به ویجیت خاصی هست یا همینطوری هم میشه یه رشته ی فارسی وارد کد کرد؟
نه مشکلی نیست می تونید فارسی بنویسید اما ممکنه در مواردی دیده بشه که نوشته ها به دلیل تنظیمات زبانی سیستم به درستی نمایش داده نشن، من معمولا پیشنهاد می کنم که از pyqt استفاده بشه که در برنامه سال جاریمون آموزشش هستش
خیلی ممنون از راهنمایی ها خوبتون حتما اموزش هاتون رو نگاه میکنم
فقت اگر امکانش هست بعد از پایان دوره ها بگید بهتره کدوم دوره رو ادامه بدیم و این ترتیب دوره های اموزشی رو بگید ممنون میشم
خواهش می کنم آخه ادامه دوره ها بستگی به کاری داره که می خواید انجام بدید
واقعا سایت و مطالبتون عالیه خیلی ممنون
ببخشید دوره ی جنگو هم میزارین؟
بله ، اما در حال حاضر تمرکز بر روی دوره پیشرفته پایتون هستش که تا اول بهمن ماه ارائه خواهد شد
دستتون درد نکنه برا اموزشاتتون.خدا خیرتون بده.خیلیا گدا بازی در میارن و این چیزا رو می فروشن
خواهش می کنم امیدوارم که مفید بوده باشه
واقعا دستتون درد نکنه با این سایت خوبی که ساختید. این مطالب جاهای دیگه پولیه ولی اینجا رایگانه واقعا ممنون
خواهش می کنم امیدوارم که مورد پسندتون قرار گرفته باشه، لطفا با اشتراک گذاری این مطالب با دوستانتون این زنجیره آموزش رو گسترش بدید.