Рубрики
Без рубрики

Изучение Python- Промежуточный курс: День 23, Intvar () и радио-бата.

Сегодня мы будем изучать радио-булочки в Тинтере сегодня, мы создадим еще одну простую … Tagged with LearnyPython, Python, программирование, учебник.

Learning Python (серия 72 части)

Сегодня мы будем изучать радиопатоны в Тинтере

Сегодня мы создадим еще одну простую программу. Макет будет состоять из одной этикетки и четырех радиолетов. Пользователь должен выбрать любую из четырех кнопок и выбрать любимый язык программирования.

Intvar ()

Прежде чем мы начнем кодировать программу, нам нужно понять, что такое «Intvar». Вчера мы увидели, что логические ценности не поддерживаются напрямую в Тинтере. Первоначально мы написали функцию с логическими значениями, но затем пришлось заменить ее. Мы должны были использовать что -то, называемое «booleanvar ()». Но что именно это было? Давайте разберемся сегодня в глубине ……

Виджеты Tkinter (например, кнопки) берут ввод от пользователя. Этот вход должен быть обработан программой. Для этого им необходимо «хранить» данные в переменные, к которым можно получить другие функции в программе. Но проблема с Tkinter заключается в том, что Tkinter не поддерживает наши обычные примитивные типы данных. Невозможно передать обычную переменную Python к виджет в качестве переменной. Так что же нам делать? Мы передаем объект, который выполняет эту работу. Эти объекты действуют как переменные. Единственное отличие в том, что вам нужно использовать get () и set () Методы для работы на них. Чтобы прочитать значение переменной, используйте get () Анкет Чтобы поместить значение в переменную, используйте установлен()

Существует четыре типа таких объектов переменных Tkinter-

x = StringVar() # Holds a string; default value ""
x = IntVar() # Holds an integer; default value 0
x = DoubleVar() # Holds a floating point integer ; default value 0.0
x = BooleanVar() # Holds a Boolean, returns 0 for False and 1 for True

Пример командной строки ниже прояснит ситуацию.

>>> a=IntVar() # You cannot declare a IntVar() without importing Tkinter
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'IntVar' is not defined

>>> from tkinter import *
>>> a=Intvar() # mind the Spelling!
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'Intvar' is not defined
>>> a=IntVar() # You cannot declare a IntVar() before creating a Tk() instance.
Traceback (most recent call last):
  File "", line 1, in 
  File "C:\Users\aatma\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 539, in __init__
    Variable.__init__(self, master, value, name)
  File "C:\Users\aatma\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 346, in __init__
    master = _get_default_root('create variable')
  File "C:\Users\aatma\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 297, in _get_default_root
    raise RuntimeError(f"Too early to {what}: no default root window")
RuntimeError: Too early to create variable: no default root window
>>> master=Tk() # A blank Tkinter window opens 
>>> a=IntVar() #IntVar() is a class and we are creating an instance of the class.
>>> a.set(1) #set the value of a to 1
>>> a.get() # get (return) the value of a.
1
>>> a+2
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unsupported operand type(s) for +: 'IntVar' and 'int'
>>> a.get()+2
3
>>> b=BooleanVar()
>>> b.set('True') # set b to 'True'
>>> b.get()
True
>>> c=DoubleVar()
>>> c.get()
0.0
>>> c.set(3)
>>> c.get() #automatic float conversion
3.0
>>> a.get()+c.get() # type converts to floating point automatically when float and integer added.
4.0
>>> d=StringVar()
>>> d.set("hello")
>>> str(c.get())+d.get() # the returned values can be used in operations.
'3.0hello'
>>> a.set(b.get()) # true=1
>>> a.get()
1
>>> a.set(c.get()) # type conversion automatic
>>> a.get()
3
>>> a.set(2.9) # floating points truncated.
>>> a.get()
2
>>> a=d
>>> a.get()
'hello'

Надеюсь, сейчас все яснее. Как только мы рассмотрим объектно -ориентированное программирование, мы тоже будем создавать такие объекты, как Intvar и многие другие.

Упражнение- Что пошло не так в примере ниже ???

>>> a=IntVar()
>>> a=1
>>> a.set(1)
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'int' object has no attribute 'set'

Отвечать

Окончательная программа.

Окончательная программа очень проста для понимания, теперь, когда мы рассмотрели Intvar () Анкет Большинство шагов такие же, как вчера, при этом радиопатоны заменяют флажки. Поэтому, пожалуйста, изучите программу внимательно и Master Tkkinter Radio-Buttons. Комментарии помещаются везде.

from tkinter import *
master= Tk()
master.title("RadioButton Demo...")
master.geometry("300x200")
v = IntVar()
v.set(-1) #initializing the choice, i.e. no default choice

languages = ["Python","Java","Swift","JavaScript"]
# making an array to choose the programming languages from

Stringlbl="My Favourite programming language is.... "
# text to display in the label

def showchoice(): # function to display the result
     ResultLabel.config(text= Stringlbl +languages[v.get()])

ResultLabel=Label(master,text=Stringlbl)
# Make the label                  
ResultLabel.pack()

#Set the radiobuttons
Radiobutton1=Radiobutton(master,text=languages[0],variable=v,command=showchoice, value=0)
Radiobutton2=Radiobutton(master,text=languages[1],variable=v,command=showchoice, value=1)
Radiobutton3=Radiobutton(master,text=languages[2],variable=v,command=showchoice, value=2)
Radiobutton4=Radiobutton(master,text=languages[3],variable=v,command=showchoice, value=3)

Radiobutton1.pack()
Radiobutton2.pack()
Radiobutton3.pack()
Radiobutton4.pack()                

master.mainloop()                  

Значение по умолчанию не присутствует.

Если вы хотите иметь какое -либо значение по умолчанию, вам нужно установить V на 0 (для ‘Python’ .. и т. Д.) При инициализации и запустить ShowChoice () функционируйте один раз. Если вы не запускаете ShowChoice () Функция, тогда Python будет выбран по умолчанию, но этикетка не показывает значение.

Выбирая только один среди всех ….

Итак, друзья, это было на сегодня. Завтра мы посмотрим, как добавить цвет в наши приложения.

Learning Python (серия 72 части)

Оригинал: “https://dev.to/aatmaj/learning-python-intermediate-course-day-23-intvar-and-radio-buttons-164k”