با سلام
در این قسمت به آموزش listView در qml پرداخته شده و همینطور با ساختار MVC در ساختار لیست qml آشنا میشویم و قسمت به قسمت استفاده از ListView برای نمایش یک لیست از اطلاعات را فرا میگیریم .
با سلام
در این قسمت به آموزش listView در qml پرداخته شده و همینطور با ساختار MVC در ساختار لیست qml آشنا میشویم و قسمت به قسمت استفاده از ListView برای نمایش یک لیست از اطلاعات را فرا میگیریم .
با سلام بهنام صباغی هستم با اموزش gui با کتابخانه tkinter این قسمت multiple events
اگر روی یک لیبل دوتا بایند تعریف کنیم مثلا یکی برای هر کلیکی که از موس بشه و یکی برای ین که فقط کلیک چپ بشه و کد رو اجرا کنیم به نظرتون چی میشه ؟ کد زیر رو اجرا کنید تا ببینید چی میشه
#********************CODE************************
from tkinter import *
root=Tk()
root.geometry('640x480+200+200')
label1=Label(root,text='label 1')
label2=Label(root,text='label 2')
label1.pack()
label2.pack()
label1.bind('<ButtonPress>',lambda e : print('<ButtonPress>'))
label1.bind('<1>',lambda e : print('1'))
root.mainloop()
#********************************************
با سلام بهنام صباغی هستم با اموزش gui با کتابخانه tkinter این قسمت virtual events
توی این درس در مورد ایونت های مجازی صحبت میکنیم کد زیر رو ببینید
#************************CODE*************************
from tkinter import *
root=Tk()
root.geometry('640x480+200+200')
entry=Entry(root)
entry.pack()
entry.bind('<<Copy>>',lambda e : print('copy'))
entry.bind('<<Paste>>',lambda e : print('paste'))
root.mainloop()
#********************************************************
با سلام بهنام صباغی هستم با اموزش gui با کتابخانه tkinter این قسمت mouse
طریقهی تعریف bind به همون صورت هست و فقط ایونت ها فرق میکنه پس من یه توضیحی درمورد ایونت ها میدم اول اینو بگم که کلید سمت چپ موس عددش 1 هست اون گردونه ای که وسط موس هست و میشه چرخوندش و میشه باهاش کلیک هم کرد 2 هست البته برای کلیک کردنش 2 هست و کلید سمت راست 3 هست حالا ایونت های زیر رو ببینید اولین ایونت برای فشرده شدن کلید هست که میشه که برای همه یکسان عمل میکنه
با سلام بهنام صباغی هستم با اموزش gui با کتابخانه tkinter این قسمت keyboard
دوستان bind هم برای ایونت ها کاربرد داره ما میتونیم با بایند هر ایونتی رو روی هر ابزاری تعریف کنیم اگر یادتون باشه کال بک فقط برای فشردن کلید ها یا به عبارت دیگه یک بار کلیک کردن روی اونها بکار میرفت ولی bind دست ما رو خیلی بازتر میذاره اینجا توی این درس من تمرکز دارم روی کلید هایی که از کیبورد میشه فشرد و درس بعد در مورد موس صحبت میکنم خب با یه مثال شروع میکنم
#********************CODE***********************
با سلام بهنام صباغی هستم با اموزش gui با کتابخانه tkinter این قسمت callback
خب یه برنامه ی ساده مینویسم و روی اون توضیح میدم
#******************CODE*******************
from tkinter import *
from tkinter import ttk
root=Tk()
root.geometry('640x480+200+200')
def button_callback():
print('clicked')
button=ttk.Button(root,text='click',command=button_callback).pack()
#***********************************
با سلام بهنام صباغی هستم با اموزش gui با کتابخانه tkinter این قسمت geometry manager place
خب دوستان این یکی خیلی دست ادم رو بازتر میذاره میشه توی x و y خاص ابزارمون رو نمایش بدیم کد زیر رو اجرا کنید
#**********************CODE******************
from tkinter import *
from tkinter import ttk
root=Tk()
root.rowconfigure(0,weight=1)
root.rowconfigure(1,weight=3)
root.columnconfigure(2,weight=1)
ttk.Label(root,text='bytton1',background='red').place(x=20,y=30)
ttk.Label(root,text='bytton1',background='blue').place(x=30,y=40)
ttk.Label(root,text='bytton1',background='orange').place(x=40,y=50)
ttk.Label(root,text='bytton1',background='green').place(x=50,y=60)
#*********************************************
خب میبینید که با تغییر اندازه ی روتمون اینها نغییری نمیکنند برای این مشکل از relx و rely استفاده میکنیم به صورت زیر
ttk.Label(root,text='bytton1',background='orange').place(relx=0.5,rely=0.5)
میبینید که تقریبا وسط پنجرمونه ولی سوال اینجاست که چطور میشه کاری کرد که دقیقا وسطش باشه جوابشم تنظیم anchor به 'center' است مثل زیر
ttk.Label(root,text='bytton1',background='orange').place(relx=0.5,rely=0.5,anchor='center')
میتونید نقطه ی صفر رو با relx و rely مقدار بدیم و از اونجا هم دوباره ایکس و y بدیم مثال زیر رو ببینید
ttk.Label(root,text='bytton1',background='pink').place(relx=0.5,x=100,rely=0.5,y=50,anchor='center')
خی تا الان از سمت جپ بالا مقدار میدادیم حالا میشه از سمت راست بالا هم مقدار داد ولی با منفی و باید relx رو برابر 1.0 قرار بدیم میدونید چرا دیگه مثال رو ببینید
ttk.Label(root,text='bytton1',background='green').place(relx=1.0,x=- 5,y=5)
و میشه اندازه ی ابزار رو هم تعیین کرد
ttk.Label(root,text='bytton1',background='green').place(relx=1.0,x=- 5,y=5,relwidth= 0.5,relheight=0.5))
و
1 - place_slaves()
2 - place_configure()
3 - place_info()
4 - place_forget()
موفق باشید
با سلام بهنام صباغی هستم با اموزش gui با کتابخانه tkinter این قسمت geometry manager grid
خب این یکی یکم بهتره البته از نظر من توی این یکی از ایندکس برای نمایش استفاده میکنیم صفحه رو به قطعه های کوچیک تقسیم میکنه از سمن بالا چپ شماره ردیف و شماره ستون کد رو ببینید
#**********************CODE***********************
from tkinter import *
from tkinter import ttk
root=Tk()
ttk.Label(root,text='bytton1',background='red').grid(row=0,column=0)
ttk.Label(root,text='bytton1',background='blue').grid(row=1,column=0)
ttk.Label(root,text='bytton1',background='orange').grid(row=0,column=1)
ttk.Label(root,text='bytton1',background='green').grid(row=1,column=1)
#************************************************
حالا اگر بخوایم دقیقا زیر هم نباشند و یکم جابجا بشند و از قطعه ی خودشون بیرون بیاند یه راه داره کد زیر رو ببینید
#**********************CODE***********************
from tkinter import *
from tkinter import ttk
root=Tk()
ttk.Label(root,text='bytton1',background='red').grid(row=0,column=2 ,rowspan=2)
ttk.Label(root,text='bytton1',background='blue').grid(row=1,column=0, columnspan=2)
ttk.Label(root,text='bytton1',background='orange').grid(row=0,column=0)
ttk.Label(root,text='bytton1',background='green').grid(row=0,column=1)
#************************************************
با این الگو میتونیم بذاریمشون زیر همدیگه اجرا کنید خودتون میفهمید و موقعیت رو هم میتونید با جهت های جغرافیایی بهش بدید
ttk.Label(root,text='bytton1',background='green').grid(row=0,column=1,stick ='e')
حالا کد زیر رو اجرا کنید
#**********************CODE***********************
from tkinter import *
from tkinter import ttk
root=Tk()
ttk.Label(root,text='bytton1',background='red').grid(row=0,column=2 ,rowspan=2,stick ='nsew')
ttk.Label(root,text='bytton1',background='blue').grid(row=1,column=0, columnspan=2,stick ='nsew')
ttk.Label(root,text='bytton1',background='orange').grid(row=0,column=0,stick ='nsew')
ttk.Label(root,text='bytton1',background='green').grid(row=0,column=1,stick ='nsew')
#************************************************
میبینید که با تغییر اندازه تغییر نمیکنند برای این مشکل با توایع rowconfigure و columnconfigure که متعلق به روت هستند و مشخص کردن وزن برای هرکدوم مشکل رو حل میکنیم مثال زیر رو ببینید
#**********************CODE***********************
from tkinter import *
from tkinter import ttk
root=Tk()
root.rowconfigure(0,weight=1)
root.rowconfigure(1,weight=3)
root.columnconfigure(2,weight=1)
ttk.Label(root,text='bytton1',background='red').grid(row=0,column=2 ,rowspan=2,stick ='nsew')
ttk.Label(root,text='bytton1',background='blue').grid(row=1,column=0, columnspan=2,stick ='nsew')
ttk.Label(root,text='bytton1',background='orange').grid(row=0,column=0,stick ='nsew')
ttk.Label(root,text='bytton1',background='green').grid(row=0,column=1,stick ='nsew')
#************************************************
کد بالا رو اجرا کنید و پنجره رو تغییر اندازه بدید میبینید که در راستای row ردیف دوم به ازای هر یک پیکسل تغییر اندازه ی ردیف اول سه پیکسل تغییر اندازه میده و هر ردیفی رو که تعریف نکنیم یا ستون فرقی نمیکنه صفر درنظر گرفته میشه
درراستای ستون ها هم سومی رو که یک دادم تغییر میکنه وبقیه صفر هستند
توابع زیر هم مثل همون pack برای grid هم صادقند
1 - grid_slaves()
2 - grid_configure()
3 - grid_info()
4 - grid_forget()
موفق باشید
با سلام بهنام صباغی هستم با اموزش gui با کتابخانه tkinter این قسمت geometry manager pack
خب لالاخره رسیدیم به حالت های چیدن ایزار هامون روی صفحه اسم کلیشون geometry manager هست و الان من میخوام شما رو بیشتر با pack اشنا کنم همونی که تا الان ازش استفاده ی ساده میکردیم و باهاش اشنایی نداشتیم حالا براتون کامل توضیحش میدم
کد زیر رو اجرا کنید
#**********************CODE******************
from tkinter import *
from tkinter import ttk
root=Tk()
button1=ttk.Button(root,text='bytton1')
button1.pack()
#*********************************************
با سلام بهنام صباغی هستم با اموزش gui با کتابخانه tkinter این قسمت dialog
دیالوگ برای زمانی کاربرد داره که میخواید به کاربر پیامی رو نمایش بدید و یا نظرش رو بپرسید با یه مثال ساده شروع میکنم
#***********************CODE**********************
from tkinter import messagebox
messagebox.showinfo(title='error',message="you dont undrestand if don't exercise")
#***************************************************
میبینید که اول یک پنجره اصل نمایش داده میشه و بعد پیام اخطار اجرا میشه چون رای اجرای پیام نیاز به یک پنجره اصلی داریم و سه مدل از این دیالوگ ها داریم که از اسمشون معلومه برای چه کاری هستند
1 - showinfo()
2 - showwarning()
3 - showerror()