استفاده از کلید در عمل
در این قسمت سعی می کنیم تا یک عملیات بسیار ساده را طرح ریزی کنیم و برای کلید مورد استفاده قرار دهیم. که ابن عملیات شامل نمایش یک خروجی و اجرای یک تابع پس از اجرای کلید خواهد بود. نمونه کد:
#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 ما تابع را بدون پرانتز قرار دادیم چون به صورت یک صفت بر روی کلید عمل خواهد کرد.
نمونه خروجی:
سلام چطور میشه یک عکس رو به عنوان پس زمینه برنامه انتخاب کرد؟
https://www.geeksforgeeks.org/how-to-use-images-as-backgrounds-in-tkinter/
سلام عالی
ببخشی یک سوال
این ارور رو چطور رفع کنم؟
File "/data/user/0/ru.iiec.pydroid3/files/temp_iiec_codefile.py", line 2 import * #making a window instance ^ SyntaxError: invalid syntax
کلیتش اینه که کد رو اشتباه وارد کردید ولی باید نسبت به کد نظر بدم
عالی
متشکرم نظر لطفتونه
سلام این ارور رو چجور رفع کنم؟
'str' object is not callable
قطعه کدتون رو هم بگذارید لطفا که بشه بررسی کرد
سلام میخوام مثلا داخل یک Entry آبی رو بنویسم که اون رنگ بک گراند رو عوض کنه به رنگ آبی
نوشتن رنگ مسئله ای نیست می تونید ورودی مربوطه رو با یک کلید به یک فانکشن برای تغییر یا config مجددframe اختصاص بدید تا بتونه تغییرات رو اعمال کنه ، و یا حتی می تونید از bind هم استفاده کنین که بدون نیاز به کلید در لحظه انجام بشه
سلام و عرض ادب و احترام ....
اولش ازتون تشکر میکنم بابت ضبط و نشر این آموزشها و آرزوی موفقیت توی کارتون رو دارم .
ببخشید دو سوال داشتم :
سوال اول اینکه چطوری میتونم کاری کنم با فشردن یک دکمه صفحه جدید باز بشه مثلا روی دکمه ثبت نام کلیک بشه در پنجره اصلی بعدش کاربر وارد پنجره وارد کردن اطلاعات بشه .... خودم یه جورایی انجام دادم اما چنتا مشکل داره گفتم از شما بپرسم
- دوم اینکه چطوری میتونم چندتا عکس رو کاربر آپلود کنه و بعدش مثل آلبوم بتونه اونارو ببینه ؟
اینا با tkinter قابل انجام هست یا نه ؟
با زم ببخشید مزاحم شدم و آرزوی بهترینها رو براتون دارم :-)
برای سازه اول یا باید از کلاس اصلی ارثبری بگیری و با top level استفاده کنی
برای مورد دوم هم می تونی از asktoopen استفاده کنی و فایل ها رومثل یک لیست استک کنی و بعد داخل لیبل به نمایش بگذاری و بهش یک تصویر بدی و یا اینکه از canvas استفاده کنی هرچند من pyqt رو برای این کار ترجیح می دم
ببخشید globalتو کدوم قسمت پایتون درس دادین من ندیدم
واقعیت حضور ذهن ندارم اما در ویدئو ها اشاره کردم به یقین،
متغیر global در حقیقت برای زمانی هستش که شما دسترسی به یک متغیری که در برنامه در درجه اول کردید رو در زمان استفاده در داخل توابع ندارید. به عنوان مثال موردی که بالا اشاره شده یک متغیر خارج از تابع هستش که می خوایم مقدارش رو تغییر بدیم در این حالت می بایست اول بگیم که مقدار کلی رو می خوایم در همه جا تغییر بدیم و بعد از global کردنش اقدام به این کار کنیم. در غیر اینصورت فقط می تونید بخونیدش و اجازه اعمال تغییر ندارید
با سپاس از زحمات شما خدا خیرتون بده
خواهش می کنم لطف دارید