استفاده از کلید در عمل

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

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

#importing modules
from tkinter import *
#making a function for button clicked
def btn_pushed():
    print("clicked")
#making a window instance
window = Tk()
#creating a title for window
window.title("icc-aria gui app")
#making a label inside the window 
Label(window,text="Push the button to see the action").pack()
#making the button to do an action
Button(window,text="Click Me!",command=btn_pushed).pack()
#making a loop for the window to run
window.mainloop()
# importing tkinter modules
from tkinter import Tk,Button,Label

# 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 label inside the window 
        Label(self,text="Push the button to see the action").pack()
        #making the button to do an action
        Button(self,text="Click Me!",command=self.btn_pushed).pack()

    #making a function for button clicked
    def btn_pushed(self):
        print("clicked")

# creating the object of app for tk main window
if __name__ == "__main__":
    app = App()
    app.mainloop()

 

نمونه خروجی:

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

#importing modules
from tkinter import *

#a variable to hold the counted times button pushed
counter = 0
#making a function for button clicked
def btn_pushed():
    #making changes to global variable of counter
    global counter
    counter +=1
    #changing the configuration of btn with every click
    btn.configure(text="Clicked Me {} time".format(counter))

#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",command=btn_pushed)
#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,Label

# 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")
        self.counter = 0
        #making a button inside the window 
        self.btn = Button(self)
        #configuring the button
        self.btn.configure(text="Click Me",command=self.btn_pushed)
        #packing the button to insert in window
        self.btn.pack()

    #making a function for button clicked
    def btn_pushed(self):
        self.counter +=1
        self.btn.configure(text="Clicked Me {} time".format(self.counter))

# creating the object of app for tk main window
if __name__ == "__main__":
    app = App()
    app.mainloop()

نکته: اگر دقت کنید در قسمت معرفی command ما تابع را بدون پرانتز قرار دادیم چون به صورت یک صفت بر روی کلید عمل خواهد کرد.

نمونه خروجی:

ثبت دیدگاه
نام *
ایمیل*
دیدگاه *
16دیدگاه
  • uk
    2 months, 4 weeks ago

    سلام چطور میشه یک عکس رو به عنوان پس زمینه برنامه انتخاب کرد؟

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

      https://www.geeksforgeeks.org/how-to-use-images-as-backgrounds-in-tkinter/

  • رضا
    3 months, 4 weeks ago

    سلام عالی
    ببخشی یک سوال
    این ارور رو چطور رفع کنم؟
    File "/data/user/0/ru.iiec.pydroid3/files/temp_iiec_codefile.py", line 2 import * #making a window instance ^ SyntaxError: invalid syntax

    • علی بیگدلی
      3 months, 4 weeks ago

      کلیتش اینه که کد رو اشتباه وارد کردید ولی باید نسبت به کد نظر بدم

  • رضا احمدی
    5 months, 2 weeks ago

    عالی

    • علی بیگدلی
      5 months, 2 weeks ago

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

  • طاها مختارزاده
    5 months, 3 weeks ago

    سلام این ارور رو چجور رفع کنم؟
    'str' object is not callable

    • علی بیگدلی
      5 months, 3 weeks ago

      قطعه کدتون رو هم بگذارید لطفا که بشه بررسی کرد

  • طاها مختارزاده
    6 months ago

    سلام میخوام مثلا داخل یک Entry آبی رو بنویسم که اون رنگ بک گراند رو عوض کنه به رنگ آبی

    • علی بیگدلی
      6 months ago

      نوشتن رنگ مسئله ای نیست می تونید ورودی مربوطه رو با یک کلید به یک فانکشن برای تغییر یا config مجددframe اختصاص بدید تا بتونه تغییرات رو اعمال کنه ، و یا حتی می تونید از bind هم استفاده کنین که بدون نیاز به کلید در لحظه انجام بشه

  • abolfazl
    7 months, 1 week ago

    سلام و عرض ادب و احترام ....
    اولش ازتون تشکر میکنم بابت ضبط و نشر این آموزشها و آرزوی موفقیت توی کارتون رو دارم .
    ببخشید دو سوال داشتم :
    سوال اول اینکه چطوری میتونم کاری کنم با فشردن یک دکمه صفحه جدید باز بشه مثلا روی دکمه ثبت نام کلیک بشه در پنجره اصلی بعدش کاربر وارد پنجره وارد کردن اطلاعات بشه .... خودم یه جورایی انجام دادم اما چنتا مشکل داره گفتم از شما بپرسم
    - دوم اینکه چطوری میتونم چندتا عکس رو کاربر آپلود کنه و بعدش مثل آلبوم بتونه اونارو ببینه ؟

    اینا با tkinter قابل انجام هست یا نه ؟

    با زم ببخشید مزاحم شدم و آرزوی بهترینها رو براتون دارم :-)

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

      برای سازه اول یا باید از کلاس اصلی ارثبری بگیری و با top level استفاده کنی
      برای مورد دوم هم می تونی از asktoopen استفاده کنی و فایل ها رومثل یک لیست استک کنی و بعد داخل لیبل به نمایش بگذاری و بهش یک تصویر بدی و یا اینکه از canvas استفاده کنی هرچند من pyqt رو برای این کار ترجیح می دم

  • علی
    8 months ago

    ببخشید globalتو کدوم قسمت پایتون درس دادین من ندیدم

    • علی بیگدلی
      8 months ago

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

  • امیرعلی
    10 months, 3 weeks ago

    با سپاس از زحمات شما خدا خیرتون بده

    • علی بیگدلی
      10 months, 3 weeks ago

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