استفاده از bind و event
یک برنامه Tkinter بیشتر وقت خود را در داخل یک حلقه رویداد اجرا می کند ، که از طریق روش mainloop وارد می شود. این انتظار برای اتفاقات است. رویدادها می توانند فشارهای کلیدی یا عملکرد ماوس توسط کاربر باشند.
Tkinter مکانیزمی را فراهم می کند تا به برنامه نویس اجازه دهد با حوادث مقابله کند. برای هر ابزارک ، اتصال توابع و روش های پایتون به یک رویداد امکان پذیر است.
widget.bind(event, handler)
اگر رویداد تعریف شده در ویجت رخ دهد ، عملکرد "handler" با یک شی رویداد فراخوانی می شود. توصیف واقعه.
from tkinter import *
window = Tk()
window.title("icc-aria gui app")
def hello(event):
print("Single Click, Button-l")
def quit(event):
print("Double Click, so let's stop")
window.quit()
widget = Button(window, text='Mouse Clicks')
widget.pack()
widget.bind('<Button-1>', hello)
widget.bind('<Double-1>', quit)
window.geometry("300x300")
widget.mainloop()
خروجی:
بیایید یک مثال ساده دیگر داشته باشیم که نحوه استفاده از رویداد حرکت را نشان می دهد ، یعنی اگر ماوس به داخل یک ابزارک منتقل شود:
from tkinter import *
def motion(event):
print("Mouse position: (%s %s)" % (event.x, event.y))
return
window = Tk()
test_txt = "Intelligent Communication Control of Aria\nICC-Aria"
msg = Message(window, text = test_txt)
msg.config(bg='lightgreen', font=('times', 24, 'italic'))
msg.bind('<Motion>',motion)
msg.pack()
window.mainloop()
خروجی:
هر بار که ماوس را در ابزارک Message حرکت می دهیم ، موقعیت نشانگر ماوس چاپ می شود. وقتی این ابزارک را ترک می کنیم ، دیگر عملکرد تابع () فراخوانی نمی شود.
سلام استاد دوره ها عالی بودن واقعا تشکر.
آیا از این به بعد ویدیو نمیزارین؟
برنامه نویسی شروع بی پایانه قطعا میگذارم ولی با تاخیر
سلام
نحوه حل مشکل خطای زیر رو لطفا راهنمایی نمایید.
can't invoke "event" command: application has been destroyed
while executing
"event generate $w <<ThemeChanged>>"
(procedure "ttk::ThemeChanged" line 6)
invoked from within
"ttk::ThemeChanged"
قبلا برنامه درست کار می کرد یهو پیش اومد خط 6 هم که اشاره کرده یه کامنته
احتمالا توی یکی از ورودی هایی که به event میاد مقداری هستش که منطقی نیست
برنامه تقریبا یک ماهه که داره کار میکنه و هیچ دستکاری هم نشده بود و این خطا ظاهر شد و همیشه هم نیست مثلا دفعه قبل 7 بار بدون خطا اجرا شد و کار کرد و بعد از اون یدفعه با اجرای برنامه در بار هشتم این خطا در همون شروع برنامه اومد و وقتی برنامه رو بستم و دوباره اجرا کردم دیگه نیومد
می تونین سورس رو بفرستید یا نه؟ اگر نه باید توضیحات بیشتری بدید البته اینجا نه
چرا فیلم نداره
چون فرصتش پیش نیومده بگیرم