ساخت یک کلید یا button

  • مدرس: علی بیگدلی
  • تاریخ انتشار: Aug 26, 2020

حال که با ساخت پنجره و ایجاد برچسب در صفحه آشنا شده این می بایست که سطح کار را بالا تر ببریم و تعامل با کاربر را نیز ایجاد کنیم. برای این کار از ساده ترین موردی که می توان مثال زد شروع می کنیم. ساخت کلید یا دکمه (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()

نمونه خروجی:

 

ثبت دیدگاه
نام *
ایمیل*
دیدگاه *
31دیدگاه
  • شایسته
    1 year, 7 months ago

    سلام
    ببخشید من میخوام یه برنامه بنویسم که وقتی اجرا میشه یک تایمر(شمارش گر معکوس) شروع کنه به شمارش و بعد وقتی تمام شد یه تایمر دیگه با مقدار کمتر شروع بشه و این کار تکرار بشه تا وقتی که دیگه خودم متوقفش بکنم
    مثل این سایت
    https://app.mypomodoro.ir/

    • علی بیگدلی
      1 year, 7 months ago

      می خوای صرفا شمارش گر رو توی کنسول ببینید یا توی صفحه وب چون اون با js هستش

    • شایسته
      1 year, 7 months ago

      سلام ممنونم از جوابتون بله توی توی وب میخوام ببینم البته یه چیزی نوشتم ولی کامل نیست چون بنده خیلی مبتدی هستم اگه راهنمایی کنید ممنون میشم با تشکر

    • علی بیگدلی
      1 year, 7 months ago

      برای شروع آموزش flask ببین

    • حسین شایسته
      1 year, 7 months ago

      سلام ممنونم از لطفتون

  • مهدی
    1 year, 10 months ago

    سلام یه سوال من یه دکمه ریپیت(شروع مجدد) درست کردم و میخوام با زدن این دکمه برنامه از صفر دوباره اجرا بشه که نخوایم هی ببندیم دوباره باز کنیم .کامندی میشناسید که کار ریپیت رو انجام بده
    ممنون

    • علی بیگدلی
      1 year, 10 months ago

      نمی دونم دقیقا چی نوشتید ولی در کل می تونید کلیدی طراحی کنین که آبجکت اصلی رو پاک و مجدد ایجاد کنه

  • smp
    1 year, 10 months ago

    با تشکر یه سوال دیگه اینکه رنگ اصلی زمینه رو چجوری میشه تفییر داد یا عکس بذاری برای پس زمینه و اصلا کلا با چه چیزی میشه عکس اضافه کرد.
    با سپاس فراوان

    • علی بیگدلی
      1 year, 10 months ago

      میبایست برای رنگ زمینه یا عکس یه config به فریم اصلی ایجاد شده بدید البته توصیه نمی کنم از تصاویر استفاده کنین

  • smp
    1 year, 10 months ago

    سلام دو تا سوال اول اینکه اندازه فونت نوشته داخل کلید رو میشه بزرگ تر کرد یا نه و دوم میشه مثلا دکمه مربعی یا دایره ای ساخت؟

    • علی بیگدلی
      1 year, 10 months ago

      اگه واقعا قیافه براتون مهم میشه بهتره متد های جدید رو استفاده کنین
      https://github.com/ParthJadhav/Tkinter-Designer

  • آرمان عباسی
    1 year, 11 months ago

    سلام اقا بیگدلی واقعا تا اینجا یکی از بهترین درس های پایتونی بود که دیده بودم ممنون از دوره عالیتان

    • علی بیگدلی
      1 year, 11 months ago

      خواهش می کنم امیدوارم مفید بوده باشه

  • mrpro
    2 years ago

    دمتون گرم که رایگان درس میدید

    • علی بیگدلی
      2 years ago

      امیدوارم مفید واقع بشه

  • رضا احمدی
    2 years, 1 month ago

    دمت گرم عالی درس میدید

    • علی بیگدلی
      2 years, 1 month ago

      متشکر نظر لطفتونه

  • حسین ستاری
    2 years, 2 months ago

    از اموزش هاتون سیار متشکرم

    • علی بیگدلی
      2 years, 2 months ago

      خواهش می کنم امیدوارم مفید واقع شده باشن

  • ahmad
    2 years, 3 months ago

    چطوری باید جای دکمه رو تغیر بدیم؟

    • علی بیگدلی
      2 years, 3 months ago

      بخش grid و pack رو مشاهده کنین دوست عزیز

  • امیررضا خیرابادی
    2 years, 4 months ago

    سلام عرض میکند خدمت شما اقای بیگدلی خیلی ممنون از مطالب جذابتون.
    میخواستم بدونم اگر بخوایم رشته ها رو به صورت فارسی بنویسیم احتیاج به ویجیت خاصی هست یا همینطوری هم میشه یه رشته ی فارسی وارد کد کرد؟

    • علی بیگدلی
      2 years, 4 months ago

      نه مشکلی نیست می تونید فارسی بنویسید اما ممکنه در مواردی دیده بشه که نوشته ها به دلیل تنظیمات زبانی سیستم به درستی نمایش داده نشن، من معمولا پیشنهاد می کنم که از pyqt استفاده بشه که در برنامه سال جاریمون آموزشش هستش

    • امیررضا خیرابادی
      2 years, 4 months ago

      خیلی ممنون از راهنمایی ها خوبتون حتما اموزش هاتون رو نگاه میکنم
      فقت اگر امکانش هست بعد از پایان دوره ها بگید بهتره کدوم دوره رو ادامه بدیم و این ترتیب دوره های اموزشی رو بگید ممنون میشم

    • علی بیگدلی
      2 years, 4 months ago

      خواهش می کنم آخه ادامه دوره ها بستگی به کاری داره که می خواید انجام بدید

  • ایلیا قرهی
    2 years, 4 months ago

    واقعا سایت و مطالبتون عالیه خیلی ممنون
    ببخشید دوره ی جنگو هم میزارین؟

    • علی بیگدلی
      2 years, 4 months ago

      بله ، اما در حال حاضر تمرکز بر روی دوره پیشرفته پایتون هستش که تا اول بهمن ماه ارائه خواهد شد

  • محدرضا
    2 years, 9 months ago

    دستتون درد نکنه برا اموزشاتتون.خدا خیرتون بده.خیلیا گدا بازی در میارن و این چیزا رو می فروشن

    • علی بیگدلی
      2 years, 9 months ago

      خواهش می کنم امیدوارم که مفید بوده باشه

  • معراج کاظمی
    2 years, 9 months ago

    واقعا دستتون درد نکنه با این سایت خوبی که ساختید. این مطالب جاهای دیگه پولیه ولی اینجا رایگانه واقعا ممنون

    • علی بیگدلی
      2 years, 9 months ago

      خواهش می کنم امیدوارم که مورد پسندتون قرار گرفته باشه، لطفا با اشتراک گذاری این مطالب با دوستانتون این زنجیره آموزش رو گسترش بدید.