Tkinter_Variable Classes در پایتون

نحوه استفاده از  کلاس متغیرها(Variable Classes)

انواع در tkinter کمی متفاوت از انواع در برنامه نویسی پایتون است .StringVar () یکی از آن انواع در tkinter است.

با استفاده از این انواع ما یاد می گیریم چگونه داده ها را از رابط گرافیکی tkinter  گرفته و در متغیرها ذخیره کنیم نا از آن داده ها استفاده کنیم.

در جدول زیر برخی از انواع  موجود در tkinter مشاهده میکنید:

7ture

بررسی با یک مثال :

وارد محیط شل پایتون شوید و برای ایجاد یک شی یا نمونه از کلاس StringVar   عبارت زیر را تایپ کنید:

>>>x=StringVar()
Traceback (most recent call last):
File "<pyshell#29>", line 1, in 
x=StringVar()
NameError: name 'StringVar' is not defined

با مشاهده این ارر متوجه میشویم برای استفاده از این کلاس باید ماژول tkinter را فراخوانی کنیم:

>>> from tkinter import*
>>> x=StringVar()
Traceback (most recent call last):
File "<pyshell#31>", line 1, in 
x=StringVar()
AttributeError: 'NoneType' object has no attribute '_root'

ارر بعدی مربو ط به این است که ما باید قبل از هر دستور دیگری بعد ازfrom tkinter import*، یک نمونه از کلاس Tk  درست میکردیم. یه جورایی میشه گفت سازنده کلاس را فرخوانی کردیم. مثل فرخوانی تابع.

الان دیگه بستر برای ایجاد یه نمونه از کلاس StringVar  مهیا شده است:

>>> root=Tk()
>>> x=StringVar()
>>> x.set("Sufra")
>>> x.get()
'Sufra'
>>> print(x)
PY_VAR0
>>> y=x.get()
>>> print(y)
Sufra
>>> y.get()
Traceback (most recent call last):
 File "<pyshell#48>", line 1, in <module>
 y.get()
AttributeError: 'str' object has no attribute 'get'
>>> print(x.get())

>>>
>>> x.get()
''
>>> print(x)
PY_VAR1

متد GET & SET

خیلی مهمه در هنگام نوشتن StringVar  به حروف بزرگ و کوچک توجه کنید چون با ارر مواجه میشوید. حالا برای مقدار دهی به x، از متد set استفاده میکنیم. توسط متد get  رشته ای را که در x ذخیره شده مشاهده میکنیم. سپس این مقدار را در متغیر دیگری ذخیره و توسط print نمایش میدهیم.. برای دیدن مقادیر پیش فرض نمیتونیم مستقیم متغیر را با PRINT چاپ کنیم. چون فقط یک متغیری را میبینیم که برای هر نمونه ایجاد شده در حال افزاش میباشد ولی مقدار پیش فرض را نمایش
نمیدهد. 

مقادیر پیش فرض

>>> print(StringVar ())
PY_VAR3
>>> g=StringVar ()
>>> print(g)
PY_VAR4
>>> print(g.get ())

>>>
>>> h=IntVar ()
>>> print(h)
PY_VAR7
>>> print(h.get())
۰
>>> j=DoubleVar ()
>>> print(j.get())
۰٫۰
>>> k=BooleanVar ()
>>> print(k.get())
False
>>>

http://sufra.ir/2017/10/09/tkinter_variable-classes/

http://sufra.ir/2017/10/09/tkinter_variable-classes/

یک مثال کاربردی 

from tkinter import *
top = Tk()
label = Label(top, text='Hello World!') label.pack()
mainloop()
http://sufra.ir/2017/10/09/tkinter_variable-classes/

http://sufra.ir/2017/10/09/tkinter_variable-classes/

from tkinter import *
top =Tk()
label = Label(top, text='Hello World!')
label.pack()
label.config(text="Hello Sufra!")
mainloop()
http://sufra.ir/2017/10/09/tkinter_variable-classes/

http://sufra.ir/2017/10/09/tkinter_variable-classes/

from tkinter import *
root = Tk()
inp = StringVar()
inp.set("New Text!")
label =Label(root, textvariable = inp).pack()
mainloop()
http://sufra.ir/2017/10/09/tkinter_variable-classes/

http://sufra.ir/2017/10/09/tkinter_variable-classes/

در شل پایتون وضوح تغییر در مقدار متغیر بیشتر است.

الان ما بدون استفاده از کلاسهای متغیر مقداری را به برچسب نسبت دادیم و خروجی آن را مشاهده کردیم.

l4

با استفاده از کلاس متغیر رشته یک نمونه ساخته و در متغیر inp قرار دادیم. سپس با استفاده از متد set آن را مقدار دهی کردیم،و در textvariable =inp برچسب قرار دادیم.

l5

ما یه نمونه ی دیگر ساخته و مقدار دهی کردیم

l6

مقادیری که در این شی ها ذخیره کرده بودیم را عوض کردیم همانطور که مشاهده میکنید فورا مقدار آنها عوض شد و قبلی ازمیان رفت.


دیدگاهتان را بنویسید

We are glad you have chosen to leave a comment. Please keep in mind that comments are moderated according to our comment policy.