آموزش tkinter پایتون | جلسه پنجم: ویجتهای بیشتر و سازماندهی بهتر پنجرهها
جلسه پنجم: ویجتهای بیشتر و سازماندهی بهتر پنجرهها
۱. معرفی کامل کتابخانه tkinter
۲. آموزش tkinter پارت ۱
۳. آموزش tkinter پارت ۲
۴. آموزش tkinter پارت ۳
۵. آموزش tkinter پارت ۴
۱. Radiobutton — دکمه انتخاب چندگانه (انتخاب یکی از چند گزینه)
|
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ |
import tkinter as tk root = tk.Tk() root.geometry("۳۰۰x200") root.title("Radiobutton Example") var = tk.StringVar() var.set("گزینه ۱") def show_choice(): print("انتخاب شده:", var.get()) rb1 = tk.Radiobutton(root, text="گزینه ۱", variable=var, value="گزینه ۱", command=show_choice) rb2 = tk.Radiobutton(root, text="گزینه ۲", variable=var, value="گزینه ۲", command=show_choice) rb3 = tk.Radiobutton(root, text="گزینه ۳", variable=var, value="گزینه ۳", command=show_choice) rb1.pack(anchor="w") rb2.pack(anchor="w") rb3.pack(anchor="w") root.mainloop() |
۲. Listbox — لیستی از گزینهها با قابلیت انتخاب
|
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ |
import tkinter as tk root = tk.Tk() root.geometry("۲۵۰x200") listbox = tk.Listbox(root) listbox.pack(pady=۲۰) items = ["سیب", "موز", "پرتقال", "انگور"] for item in items: listbox.insert(tk.END, item) def show_selection(): selected = listbox.curselection() if selected: print("انتخاب شده:", listbox.get(selected[۰])) button = tk.Button(root, text="نمایش انتخاب", command=show_selection) button.pack() root.mainloop() |
۳. Scrollbar — اسکرول بار برای پیمایش متن یا لیست
|
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ |
import tkinter as tk root = tk.Tk() root.geometry("۳۰۰x200") text = tk.Text(root, height=۵, width=۳۰) text.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) scrollbar = tk.Scrollbar(root, command=text.yview) scrollbar.pack(side=tk.RIGHT, fill=tk.Y) text.config(yscrollcommand=scrollbar.set) for i in range(۳۰): text.insert(tk.END, f"خط شماره {i+1}\n") root.mainloop() |
نکات مهم جلسه پنجم:
Radiobutton: متغیر متصل به همه رادیوباتنها باید یکسان باشد (StringVar یا IntVar) تا فقط یک گزینه انتخاب شود.
Listbox: انتخاب را با curselection() میگیریم، چند گزینه هم قابل انتخاب است (با تنظیم selectmode).
Scrollbar: باید به ویجتی وصل شود که قابلیت پیمایش دارد مثل Text یا Listbox و با yscrollcommand و command ارتباط دوطرفه برقرار شود.
تمرین جلسه پنجم:
یک پنجره بساز با:
- یک لیست میوه (Listbox)
- سه Radiobutton برای انتخاب رنگ (قرمز، سبز، آبی)
- یک Text چندخطی برای توضیح
- یک Scrollbar برای Text
- دکمهای که با کلیک:
- میوه انتخاب شده و رنگ انتخابی را نمایش دهد.
- متن داخل Text را هم چاپ کند.
کد تمرین جلسه پنجم:
|
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ ۳۷ ۳۸ ۳۹ ۴۰ ۴۱ ۴۲ ۴۳ ۴۴ ۴۵ ۴۶ ۴۷ ۴۸ ۴۹ ۵۰ ۵۱ ۵۲ ۵۳ ۵۴ ۵۵ ۵۶ |
import tkinter as tk from tkinter import messagebox def show_info(): # گرفتن میوه انتخاب شده از Listbox selected = listbox.curselection() if selected: fruit = listbox.get(selected[۰]) else: fruit = "هیچ میوهای انتخاب نشده" # گرفتن رنگ انتخاب شده از Radiobutton color = color_var.get() # گرفتن متن داخل Text description = text.get("۱.۰", "end-1c") msg = f"میوه انتخاب شده: {fruit}\nرنگ انتخاب شده: {color}\nتوضیحات:\n{description}" messagebox.showinfo("اطلاعات وارد شده", msg) root = tk.Tk() root.geometry("۴۰۰x400") root.title("تمرین جلسه پنجم") # لیست میوهها listbox = tk.Listbox(root, height=۵) fruits = ["سیب", "موز", "پرتقال", "انگور"] for f in fruits: listbox.insert(tk.END, f) listbox.pack(pady=۱۰) # Radiobutton برای رنگ color_var = tk.StringVar(value="قرمز") colors = ["قرمز", "سبز", "آبی"] for c in colors: rb = tk.Radiobutton(root, text=c, variable=color_var, value=c) rb.pack(anchor="w") # Text چندخطی همراه Scrollbar frame = tk.Frame(root) frame.pack(pady=۱۰, fill=tk.BOTH, expand=True) text = tk.Text(frame, height=۵, width=۴۰) text.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) scrollbar = tk.Scrollbar(frame, command=text.yview) scrollbar.pack(side=tk.RIGHT, fill=tk.Y) text.config(yscrollcommand=scrollbar.set) # دکمه نمایش اطلاعات button = tk.Button(root, text="نمایش اطلاعات", command=show_info, bg="green", fg="white", font=("Arial", ۱۲)) button.pack(pady=۱۵) root.mainloop() |
نکات مهم جلسه پنجم:
۱. Listbox
- curselection() یک لیست ایندکسهای انتخاب شده میدهد. برای گرفتن مقدار باید از listbox.get(index) استفاده کرد.
- اگر هیچ گزینهای انتخاب نشده باشد، ممکن است لیست خالی باشد.
۲. Radiobutton
- همه رادیوباتنها باید به یک متغیر (StringVar یا IntVar) متصل باشند تا فقط یکی انتخاب شود.
- مقدار انتخاب شده با color_var.get() خوانده میشود.
۳. ScrollBar و Text
- اسکرول بار به صورت جداگانه ساخته میشود و با پارامترهای command و yscrollcommand به ویجت متصل میشود.
- معمولا Text و Scrollbar را داخل یک Frame قرار میدهیم برای سازماندهی بهتر.
۴. نمایش پیام با messagebox
- برای نمایش پیامهای اطلاعاتی و هشدار میتوان از messagebox.showinfo استفاده کرد.
- ابتدا باید from tkinter import messagebox را ایمپورت کرد.
” لطفا سوالات خود را با ذکر عنوان مقاله ارسال کنید. آموزشگاه خانه رباتیک ایران در کنار شماست. “
آماده سازی فرم
لطفا صبر کنید
فرم ساز آسان
شعبه ساری: خیابان مهدیه، نبش بهمن شرقی
شعبه بابل: پل کارگر به سمت کشوری، روبروی ماکروویو، جنب فروشگاه جانبو
شعبه قائم شهر: خیابان ساری، بین یاس ۲۰ و ۲۲




