ساخت checkbutton

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

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

#importing libraries
from tkinter import *

# building a window
window = Tk()

#adding window title
window.title("icc-aria gui app")

#making the checkbutton for male
Checkbutton(window, text="male").pack()

#making the checkbutton for female
Checkbutton(window, text="male").pack()

#creating the loop for the program
window.mainloop()
# importing tkinter modules
from tkinter import *

# 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 the checkbutton for male
        Checkbutton(self, text="male").pack()

        #making the checkbutton for female
        Checkbutton(self, text="male").pack()

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

نمونه خروجی:

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

کد نمونه:

#importing libraries
from tkinter import *

#function to get the name and family name to show in window and console
def sign_in():
    first_name = name.get()
    last_name = family_name.get()
    if male_btn.get() == 1 and female_btn.get() == 0:
        gender = "mr"
    elif female_btn.get() == 1 and male_btn.get() == 0:
        gender = "mrs"
    elif female_btn.get() == 1 and male_btn.get() == 1:
        gender = "unknown"
    else:
        gender = "unknown"                
    user_name.configure(text="welcome {} {} {}".format(gender,first_name,last_name))

# building a window
window = Tk()

#adding window title
window.title("icc-aria gui app")

#making a label for first name entry
Label(window, text="First Name").pack()

#making the entry for first name
name = Entry(window)
name.pack()

#making a label for last name entry
Label(window, text="Last Name").pack()

#making the entry for last name
family_name = Entry(window)
family_name.pack()

#making the checkbutton for male
male_btn = IntVar()
Checkbutton(window, text="male", variable=male_btn).pack()

#making the checkbutton for female
female_btn = IntVar()
Checkbutton(window, text="female", variable=female_btn).pack()

#making an action button
btn = Button(window,text="sign in",command=sign_in)
btn.pack()

#making a label to be able to say welcome
user_name = Label(window)
user_name.pack()

#creating the loop for the program
window.mainloop()
# importing tkinter modules
from tkinter import *

# 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 for first name entry
		Label(self, text="First Name").pack()

		#making the entry for first name
		self.name = Entry(self)
		self.name.pack()

		#making a label for last name entry
		Label(self, text="Last Name").pack()

		#making the entry for last name
		self.family_name = Entry(self)
		self.family_name.pack()

		#making the checkbutton for male
		self.male_btn = IntVar()
		Checkbutton(self, text="male", variable=self.male_btn).pack()

		#making the checkbutton for female
		self.female_btn = IntVar()
		Checkbutton(self, text="female", variable=self.female_btn).pack()

		#making an action button
		Button(self,text="sign in",command=self.sign_in).pack()
		

		#making a label to be able to say welcome
		user_name = Label(self)
		user_name.pack()
	
	#function to get the name and family name to show in self and console
	def sign_in(self):
		first_name = self.name.get()
		last_name = self.family_name.get()
		if self.male_btn.get() == 1 and self.female_btn.get() == 0:
			gender = "mr"
		elif self.female_btn.get() == 1 and self.male_btn.get() == 0:
			gender = "mrs"
		elif self.female_btn.get() == 1 and self.male_btn.get() == 1:
			gender = "unknown"
		else:
			gender = "unknown"                
		self.user_name.configure(text="welcome {} {} {}".format(gender,first_name,last_name))

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

نمونه خروجی:

ثبت دیدگاه
نام *
ایمیل*
دیدگاه *
6دیدگاه
  • امیر
    1 month, 1 week ago

    سلام ببخشید چطوری میشه یک entry عددی گرفت ؟

    • علی بیگدلی
      1 month, 1 week ago

      می تونی از ویدجت های دیگه استفاده کنی و یا اینکه ورودی str بگیری و تبدیل به int کنی منتهی در صورت وارد نکردن عدد باید کاربر رو از اشتباهش آگاه کنی

  • حسین ستاری
    3 months, 2 weeks ago

    سلام اگر بخواهیم وریبل checkbutton خود را بجای اینتیجر بصورت استرینگ تعریف کنیم باید از چه ماژولی استفاده کنیم

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

      دلیلش رو متوجه نمیشم چون ساختارش برای حالت 0 و 1 طراحی شده ولی به نظرم باید بتونین به صورت StrVar باهاش ارتباط بگیرید

  • Komeil Sedaghat
    5 months, 2 weeks ago

    سلام مهندس خسته نباشید
    اگه بخوایم محتویات یک تابع را به تابع دیگر انتقال دهیم چکار باید کنیم؟
    مثلا جواب یک چک باتنی که در تابع ایکس وجود داره به تابع ایگرگ انتقال دهیم؟

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

      خروجی یک تابع رو می تونی به عنوان ورودی تابع دیگر استفاده کنید که قطعا باید در تابع اول مقدار را return کنین ، البته در مورد رابط گرافیکی می تونید از attribute های کلاس استفاده کنین و مثل یک متغیر گلوبال برخورد کنین