Как сделать кнопку невидимой tkinter

Добавил пользователь Евгений Кузнецов
Обновлено: 20.09.2024

Привет всем! В сегодняшней статье о Tkinter мы рассмотрим виджет кнопки Tkinter.

Привет всем! В сегодняшней статье о Tkinter мы рассмотрим виджет кнопки Tkinter.

Виджет кнопки Tkinter – это очень простой и удобный в использовании виджет.

Давайте посмотрим, как мы можем создавать кнопки и добавлять функциональность в наше графическое приложение, используя несколько наглядных примеров!

Виджет кнопки Tkinter

Этот виджет можно использовать для создания различных типов кнопок.

У нас могут быть кнопки, содержащие не только текст, но и изображения!

Мы также можем заставить кнопку Tkinter вызывать определенную функцию, соответствующую функциональности кнопки, используя функцию обратного вызова .

Чтобы определить кнопку с определенным текстом и функцией обратного вызова, мы можем использовать следующее определение:

Здесь text – это текст на кнопке, а command относится к функции обратного вызова, которая вызывается при нажатии кнопки.

Давайте теперь сделаем простое приложение, имеющее кнопку, которая при нажатии отображает окно предупреждения, которое сообщает нам, что оно было нажато!

Приведенный ниже фрагмент кода показывает это, с комментариями, объясняющими каждую строку кода.

Теперь, запустив эту программу, вы получите следующий результат.

Теперь, если вы хотите, чтобы изображение шло вместе с вашей кнопкой, чтобы сделать его немного более причудливым, это возможно!

Просто добавьте еще один аргумент ключевого слова в tk.Button() call, called image ! Это ImageTk.PhotoImage , экземпляр которого необходимо создать с помощью файла изображения.

Чтобы использовать ImageTk , мы должны импортировать его из модуля PIL . Сначала мы создаем изображение PIL , изменяем его размер так, чтобы оно было достаточно маленьким, а затем из вашего фотоизображения .

Теперь мы готовы сформировать объект фотоизображения.

Теперь, наконец, мы можем добавить его в нашу кнопку!

Однако вы должны быть немного осторожны, так как использование значка переопределит любой текст, который есть у кнопки.

Чтобы избежать этого, используйте аргумент ключевого слова compound . Это значение может быть установлено в tk.ЦЕНТР , тк.СЛЕВА , тк.СПРАВА , тк.СВЕРХУ или т. К. СНИЗУ . Это определит ориентацию текста по отношению к изображению.

Поскольку мы поместим текст поверх изображения, мы будем использовать tk.TOP

Я покажу вам полный код ниже:

Вывод

Надеюсь, вы также смогли создать свой собственный виджет кнопок Tkinter. В следующих уроках мы больше сосредоточимся на некоторых виджетах, так что следите за обновлениями!

В библиотеки Tkinter каждый виджет имеет определенные свойства, значения которых можно задавать при их создании, а также программировать их изменение при действии пользователя и в результате выполнения программы.

Виджеты – это базовые блоки для создания графического интерфейса программы. За годы развития программирования некоторые из виджетов стали стандартными во всех языках и на всех платформах.

В этой статье мы продолжаем работать в библиотеке Tkinter, а именно рассмотрим базовые виджеты.

Кнопки

Объект-кнопка создается вызовом класса Button модуля tkinter. Обязательным аргументом является родительский виджет. Другие свойства могут указываться при создании кнопки или задаваться позже. Синтаксис кнопки:

У кнопки есть множество свойств. Рассмотрим некоторые свойства кнопки:

В данном примере мы создаем кнопку и задаем ей свойства. Параметры bg и fg – это сокращения от background(фон) и foreground(передний план). Ширина и высота измеряются в знакоместах (количество символов).

Будет создана кнопка:


Библиотека Tkinter: Виджеты

Надписи (метки)

Надписи – это виджеты, содержащие строку (или несколько строк) текста и служащие в основном для информации пользователя. Пример:


Библиотека Tkinter: Виджеты

Поля ввода

Однострочное поле ввода создается с помощью класса Entry. Такое поле позволяет ввести только одну строчку кода. Пример:

Параметр bd – это сокращение от borderwidth (ширина границы).


Библиотека Tkinter: Виджеты

Класс Text предназначен для создания многострочного текстового поля. Пример:

Свойство wrap в зависимости от своего значения позволяет переносить текст, вводимый пользователем либо по символам, либо по словам, либо вообще не переносить, пока пользователь не нажмет Enter.


Библиотека Tkinter: Виджеты

Переключатели и флажки

Переключатели используют только группами, при этом в одной группе может быть “включена” лишь одна кнопка. Пример:

Одна группа определяет значение одной переменной, т.е. если выбрать радиокнопку rad2, то значение переменной var будет 2. Изначально также требуется установить значение переменной (выражение var.set(1) задает значение переменной var равное 1).


Библиотека Tkinter: Виджеты

Для создания независимых переключателей (флажков) используется класс Checkbutton. В отличие от радио-кнопок, значение каждого флажка привязывается к своей переменной, значение которой определяется опциями onvalue (включено) и offvalue (выключено) в описании флажка. Пример:


Библиотека Tkinter: Виджеты

Списки

Вызов класса Listbox создает объект, в котором пользователь может выбрать один или несколько пунктов в зависимости от значения опции selectmode. Пример:

В данном примере значение SINGLE позволяет выбирать лишь один пункт из списка.

Изначально список (Listbox) пуст. С помощью цикла for в него добавляются пункты из списка r.

Добавление происходит с помощью специального метода класса Listbox – insert. Данный метод принимает два параметра: куда добавить и что добавить.


Библиотека Tkinter: Виджеты

Рамки

Рамки необходимы для организации других виджетов в группы внутри окна. Пример:

Данный пример создает три фрейма разного размера. Свойство bd (сокращение от boderwidth) определяет расстояния от края рамки до заключенных виджетов (если они есть).


Библиотека Tkinter: Виджеты

На фреймах также можно размещать виджеты как на основном окне (root). Для примера добавим текстовое поле в рамку fra2:


Библиотека Tkinter: Виджеты

Дочерние окна

С помощью класса Toplevel создаются дочерние окна, на которых также могут располагаться виджеты.

При закрытие главного окна, окно Toplevel также закрывается. Если закрыть окно Toplevel, тогда главное окно не закроется. Пример:


Библиотека Tkinter: Виджеты

Метод minisize конфигурирует минимальный размер окна (есть метод maxsize, определяющий максимальный размер окна).

Шкала

Назначение шкалы – это представление пользователю выбора какого-то значения из определенного диапазона.

Внешне шкала представляет собой горизонтальную или вертикальную полосу с разметкой, по которой пользователь может передвигать движок, осуществляя выбор значения. Рассмотрим пример:

  • orient определяет направление шкалы;
  • length – длина шкалы в пикселях;
  • from_ и to – с какого значения шкала начинается и каким заканчивается;
  • tickinterval – интервал, через который отображаются метки для шкалы;
  • resolution – минимальная длина отрезка, на которую пользователь может передвинуть движок.


Библиотека Tkinter: Виджеты

Полоска прокрутки

Виджет Scrollbar позволяет прокручивать содержимое другого виджета (например, текстового поля или списка). Прокрутка может быть как по горизонтали, так и по вертикали. Пример:

Метод grid еще один способ расположения виджета в окне.


Библиотека Tkinter: Виджеты

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

Каждый пункт списка представляет собой команду, запускающую какое-либо действие или открывающую диалоговое окно. Рассмотрим пример создания меню:

Метод add_cascade добавляет новый пункт меню, который указывается как значение опции menu. Метод add_cascade помогает привязать вложенное меню.

Метод add_command добавляет новую команду в пункт меню. Опция command в данном методе связывает данную команду с функцией обработчик.


Библиотека Tkinter: Виджеты



Программа “Изменение цвета окна”

Для закрепления теоретического материала создадим небольшую программу “Изменение цвета окна”, которая будет создавать окно со строкой меню, команды которого позволяют изменить цвет фона и размер основного окна. Листинг:


Библиотека Tkinter: Виджеты

На этом наша статья подходит к завершению. Рекомендуется самостоятельно отработать все примеры виджетов на своем компьютере. Пишите в комментариях свои варианты графических программ.

Видео по созданию программы:



Редактируемый графический интерфейс, который поставляется с Python, представляет собой окно изображения.

Tkinter - это модуль для проектирования окон с использованием Python. Простая структура, многоплатформенность, совместимость с несколькими системами могут сделать его хорошим помощником для быстрого начала работы и настройки файлов окон. Это простой тип в оконном модуле Python. Следовательно, необходимо начать и уметь пользоваться окнами.

виджеты tkinter

2.1 Ярлык и кнопка Ярлык и кнопка

Рамка главного окна

Главный фрейм каждого приложения tkinter может содержать следующие части, определять окно и некоторые свойства окна, затем записывать содержимое окна и, наконец, выполнять window.mainloop, чтобы сделать окно живым.

Сначала создайте метку описания tk.Label (обратите внимание, что первая буква объекта обычно заглавная), пример кода выглядит следующим образом:

Результат бега показан на рисунке:


Мы также можем управлять отображением меток в виде переменных, на этот раз мы вводим кнопки tk.Button Концепция, каждый раз, когда нажимается кнопка, метка меняется один раз. Замените метку выше следующим содержанием. И сохраните текст, который нужно изменить, как переменную. var:

Затем делаем кнопку т.к.

Функция hit_me выглядит следующим образом:

Результаты операции следующие:

Когда нет щелчка:


Нажмите в первый раз:


Щелкните второй раз:


2.2 Ввод и ввод текста, текстовое поле

На основе определения окна сначала определите Entry, код будет следующим:

Обратите внимание, что для показа здесь вы можете настроить символы, которые хотите отображать в записи, например, при вводе пароля вы можете сделать show = ‘*’


Определение кнопки выглядит следующим образом:

Определение функции следующее:


Полный код выглядит следующим образом:

Результат выполнения выглядит следующим образом: сначала введите 111111 в Entry и нажмите кнопку 1, как показано ниже:


Выберите определенную точку в качестве позиции для вставки, затем введите 2 в поле ввода и нажмите кнопку 1.


Введите 3 в Entry и нажмите кнопку 2.


Кроме того, insert также может выполнять вставку содержимого в определенном месте. Например, измените функцию insert_end следующим образом:

Реализация insert_end перечисляет вставленный контент в строке 2 текста, и результат выполнения выглядит следующим образом:


2.3 Виджет списка Listbox

Функции примеров в этом разделе следующие: сверху вниз, это метка, кнопка и список. Button понимает, что контент, выбранный в данный момент курсором в окне списка, отображается в метке.


После определения окна сначала определите метку, установите желтый цвет фона и определите текстовое содержимое как переменную, код выглядит следующим образом:

Наконец, Listbox определен, и настройка, вставка и удаление содержимого в Listbox реализованы, как показано ниже.

Полный код выглядит следующим образом:

2.4 Кнопка выбора радиокнопки


Как показано на рисунке, Radiobutton - это выбираемая кнопка на рисунке выше.Этот раздел понимает, что при выборе разных Radiobutton печатается соответствующее содержимое.

Сначала определите метку с желтым фоном. Код см. В полном коде.

Затем нам нужно определить три Radiobuttons:

Определение функции print_selection следующее:

config может изменять все параметры, выберите текстовый атрибут в определении функции, который нужно изменить.

Полный код выглядит следующим образом:

Результат операции следующий: если он не выбран, содержимое метки отображается как пустое, при выборе Radiobutton соответствующее содержимое отображается в метке.


2.5 Масштаб

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


Полный код выглядит следующим образом:

При определении атрибута Scale имя - label, from to - это диапазон значений, from_ - отличать от в python, а Scale также имеет атрибуты horizontal и vertical. Обратите внимание, что это tk. Horizontal / vertical. Длина - это длина дисплея, которая отличается от ширины метки. Единица измерения ширины - символы, а длина - пиксели. showvalue означает, следует ли отображать выбранное число. Оно не отображается, если значение равно 0, и отображается, когда оно равно 1. Единицей длины отображаемой метки является интервал в тиках, который представляет собой интервал между отображаемыми числами.Если значение равно 3, отображаются 5, 8, 11. Разрешение - это количество сохраняемых десятичных знаков.

Командная функция, определенная в Scale, имеет входящее значение по умолчанию, которое является значением, отмеченным в данный момент на метке Scale. Поэтому при определении функции print_selection вам необходимо определить параметр для представления входящего значения.

2.6 Вариант проверки с помощью кнопки

Подобно Radiobutton, но Radiobutton выбирает один, а остальные не выбраны по умолчанию, но Checkbutton аналогичен множественному выбору, и возможен множественный выбор.

Определите две контрольные кнопки следующим образом:

Сначала определите две переменные var1 и var2, которые являются целыми числами.

Переменные двух контрольных кнопок равны var1 и var соответственно, и значение равно 1, когда выбрано, то есть onvalue = 1 и offvalue = 0, когда не выбрано.

Print_selection команды определяется следующим образом, и соответствующая операция выполняется в соответствии со значениями var1 и var2.

Полный код выглядит следующим образом:

Результаты операции следующие:


Когда Python выбирается индивидуально:



Когда C ++ выбран отдельно:


Выбраны оба:


Ничего не выберите:

2.7 Холст

Укажите область, в которой можно разместить изображения, графику и т. Д., А также изменить положение и форму.

Сначала определите Canvas.

Чтобы разместить изображение, сначала прочтите изображение и сохраните его в image_file, затем Canvas поместите изображение на холст через create.image. Обратите внимание, что 10 и 10 - это координаты места размещения, а привязка означает точку привязки, то есть положение привязки. Доступные для выбора атрибуты следующие:


nw помещается в левый верхний угол, а координаты левого верхнего угла изображения должны быть определены как 10, 10.

Затем create.line рисует прямую линию от координат (90, 90) до (120, 120).

create.oval - нарисовать круг и залить цветом.

create.arc - нарисовать сектор, начало и протяженность указывают, что сектор от 0 ° до 180 °.

create.rectangle - нарисовать квадрат.

Кроме того, определяется кнопка. Функция кнопки состоит в том, что каждый раз, когда вы щелкаете мышью, прямоугольный объект, представляющий собой нарисованный квадрат, перемещается на два квадрата вниз. В функции moveit 0 означает, что смещение в направлении x равно 0, а 2 - это изменение смещения в направлении y. шкала. Результаты показаны ниже.



Кнопка перемещения одиночной машины, положение квадрата меняется:

2.8 Меню меню

Строка меню, показанная ниже, представляет собой простую строку меню, которую нужно заполнить в этом разделе.


Сначала определите меню в окне window `` python menubar = tk.Menu (window) `` Затем создайте параметр "Файл" в строке меню. Сначала определите также и меню. В этот раз меню помещается в строку меню и передается add_cascade (cascade: cascade) помещается в строку меню

Затем, как показано на рисунке выше, в опции File добавьте New, Open, Save, divider и Exit.

Таким же образом добавьте опцию Edit, смотрите полный код для кода


Затем давайте создадим подменю в файле, как показано ниже


В коде do_job выполняет простую функцию отображения, как показано ниже:

2.9 Рама

Нижняя рама, на нее можно ставить различные мелкие детали


Сначала определите главный фрейм и поместите его в окно

Затем определите две рамки второго слоя, расположенные соответственно слева и справа от основного кадра.

Две метки помещаются в левую рамку, а одна метка - в правую.

Определите кнопку на основе окна

tk.Button(window, text='hit me', command=hit_me).pack()

как показано на картинке:


Затем определите всплывающее окно, ошибка возникает во время выполнения

AttributeError: module ‘tkinter’ has no attribute ‘messagebox’

Попробуйте добавить импорт для успешного выполнения

from tkinter import messagebox

Messagebox имеет несколько функций, которые будут подробно описаны ниже.



tk.messagebox.showerror(title='Hi', message='No!! never')




Требуемая операция может быть дополнительно выбрана в соответствии со значением возврата

Возвращается Истина или Ложь


Вы также можете выполнять дальнейшие операции на основе возвращенного значения.

Но я не знаю, почему возникает ошибка во время выполнения: AttributeError: module'tkinter.messagebox 'has no attribute'asktrycancel'



2.11 место для сетки

Атрибут side определяет позицию для размещения, есть верхняя, нижняя, левая, правая


По сетке (размещенной в виде сетки)

Без подушечки и подушечки:


Среди них padx и pady используются для заполнения дисплея, padx и pady используются для установки внешнего отображения заполнения кадра, а ipadx и ipady используются для настройки внутреннего отображения кадра.


Может быть точно размещен по определенной координате


Пример окна входа в систему

3.1 Пример 1 Окно входа в систему

На основе предыдущего учебного материала создайте следующее окно


Код выглядит следующим образом:

3.2 Пример 1 Окно входа в систему

В этом разделе добавлена ​​функция входа в систему, код выглядит следующим образом:

Сначала откройте и загрузите файл с информацией о пользователе, прочитав двоичную систему. Если файл не существует, создайте файл и добавьте пользователя с именем admin и паролем admin.

Если имя пользователя существует в файле информации о пользователе и пароль введен правильно, появится окно приветствия, в противном случае отобразится ошибка пароля.

Если пользователь не существует, всплывающее окно спрашивает, регистрироваться ли, и операция регистрации выполняется с помощью возвращенного значения True или False.

Результаты операции следующие:
При вводе неправильного пароля:



Если пароль введен правильно:


Когда пользователя не существует:

3.3 Пример 1 Окно входа в систему

Во время регистрации появится новое окно, как показано ниже:


Сначала определите новое окно

Определите имя пользователя, пароль и подтверждение пароля, а также три входа и кнопку

Затем определите функцию sign_to_Mofan_Python

Откройте и прочтите файл usrs_info, сначала проверьте, равны ли пароли, если нет, всплывающее окно предложит, что пароли несовместимы

Если регистрация квалифицирована, информация будет сохранена. В pickle содержится словарь, exist_usr_info [nn] = Это предложение np - имя пользователя: пароль, и новая регистрационная информация передается в файл информации о пользователе посредством дампа. И всплывающее окно сообщает, что регистрация прошла успешно.

Наконец закройте окно регистрации через уничтожение

Полный код выглядит следующим образом:

Результаты бега следующие:

Когда имя пользователя уже существует:


Если пароль введен неверно:



Когда регистрация прошла успешно:

Окно регистрации закрывается после нажатия ОК.


Включение и выключение кнопки
Что и где нужно воткнуть, чтоб после нажатия на кнопку она становилась недоступной? То есть.

Включение и выключение кнопки
Здравствуйте. Есть две кнопки, нужно чтобы по нажатию на первую - вторая выключалась и наоборот. И.

Рандомное включение выключение кнопки
Есть две кнопки нужно сделать что бы при запуске программы рандомно нажималась одна из двух кнопок.

Включение/выключение кнопки по выделению элемента ListBox
Добрый день, форумчане! Мне нужно сделать так, чтобы при включении формы, на которой есть.

Читайте также: