Как сделать кнопку неактивной pyqt5
На этом шаге мы рассмотрим особенности управления этим циклом .
Для взаимодействия с системой и обработки возникающих сигналов предназначен основной цикл приложения. После вызова метода ехес_() программа переходит в бесконечный цикл. Инструкции, расположенные после вызова этого метода, будут выполнены только после завершения работы всего приложения. Цикл автоматически прерывается после закрытия последнего открытого окна приложения. С помощью статического метода setQuitOnLastWindowClosed() из класса QApplication это поведение можно изменить.
Чтобы завершить работу приложения, необходимо вызвать слот quit() или метод exit([returnCode=0]) класса QApplication . Поскольку программа находится внутри цикла, то вызвать эти методы можно лишь при наступлении какого-либо события, — например, при нажатии пользователем кнопки.
После возникновения любого сигнала основной цикл прерывается, и управление передается в обработчик этого сигнала. После завершения работы обработчика управление опять передается основному циклу приложения.
Если внутри обработчика выполняется длительная операция, то программа перестает реагировать на события. В качестве примера изобразим длительный процесс с помощью функции sleep() из модуля time .
# -*- coding: utf-8 -*- from PyQt5 import QtWidgets import sys, time def on_clicked(): time.sleep(10) # "Засыпаем" на 10 секунд app = QtWidgets.QApplication(sys.argv) button = QtWidgets.QPushButton("Запустить процесс") button.resize(200, 40) button.clicked.connect(on_clicked) button.show() sys.exit(app.exec_())
Архив с файлом можно взять здесь.
В этом примере при нажатии кнопки Запустить процесс вызывается функция on_clicked() , внутри которой мы приостанавливаем выполнение программы на десять секунд и тем самым прерываем основной цикл. Попробуйте нажать кнопку, перекрыть окно другим окном, а затем заново его отобразить, — вам не удастся это сделать, поскольку окно перестает реагировать на любые события, пока не закончится выполнение процесса. Короче говоря, программа просто зависнет.
Длительную операцию можно разбить на несколько этапов и по завершении каждого этапа выходить в основной цикл с помощью статического метода processEvents([flags=AllEvents]) из класса QCoreApplication , от которого наследуется класс QApplication . Переделаем предыдущую программу, инсценировав с помощью цикла длительную операцию, которая выполняется 20 секунд.
# -*- coding: utf-8 -*- from PyQt5 import QtWidgets import sys, time def on_clicked(): button.setDisabled(True) # Делаем кнопку неактивной for i in range(1, 21): QtWidgets.qApp.processEvents() # Запускаем оборот цикла time.sleep(1) # "Засыпаем" на 1 секунду print("step -", i) button.setDisabled(False) # Делаем кнопку активной app = QtWidgets.QApplication(sys.argv) button = QtWidgets.QPushButton("Запустить процесс") button.resize(200, 40) button.clicked.connect(on_clicked) button.show() sys.exit(app.exec_())
Архив с файлом можно взять здесь.
В этом примере длительная операция разбита на одинаковые этапы, после выполнения каждого из которых выполняется выход в основной цикл приложения. Теперь при перекрытии окна и повторном его отображении окно будет перерисовано — таким образом, приложение по-прежнему будет взаимодействовать с системой, хотя и с некоторой задержкой.
Со следующего шага мы начнем рассматривать многопоточные приложения .
Как сделать кнопку неактивной pyqt5
На этом шаге мы перечислим основные методы и сигналы этого класса .
Класс QWizard реализует набор страниц, отображаемых последовательно или в произвольном порядке. Иерархия наследования для него выглядит так:
(QObject, QPaintDevice) - QWidget - QDialog - QWizard
Формат конструктора класса QWizard :
Объект> = QWizard([parent=None][, flags=0])
addPage () — добавляет страницу в конец мастера и возвращает ее целочисленный идентификатор. В качестве параметра указывается экземпляр класса QWizardPage ;
- ClassicStyle ( или 0) ;
- ModernStyle ( или 1) ;
- MacStyle ( или 2) ;
- AeroStyle ( или 3) — доступен только в операционной системе Windows Vista и последующих версиях этой системы. В остальных системах будет соответствовать стилю ModernStyle ;
- PlainText ( или 0) — простой текст;
- RichText ( или 1) — форматированный текст;
- AutoText ( или 2) — автоматическое определение (режим по умолчанию). Если текст содержит HTML -теги, то используется режим RichText , в противном случае — режим PlainText ;
- BackButton ( или 0) — кнопка Back ;
- NextButton ( или 1) — кнопка Next ;
- CommitButton ( или 2) — кнопка Commit ;
- FinishButton ( или 3) — кнопка Finish ;
- CancelButton ( или 4) — кнопка Cancel (если установлена опция NoCancelButton , кнопка не отображается);
- HelpButton ( или 5) — кнопка Help (чтобы отобразить кнопку, необходимо установить опцию HaveHelpButton );
- CustomButtonl ( или 6) — первая пользовательская кнопка (чтобы отобразить кнопку, необходимо установить опцию HaveCustomButtonl );
- CustomButton2 ( или 7) — вторая пользовательская кнопка (чтобы отобразить кнопку, необходимо установить опцию HaveCustomButton2 );
- CustomButton3 ( или 8) — третья пользовательская кнопка (чтобы отобразить кнопку, необходимо установить опцию HaveCustomButton3 );
- WatermarkPixmap ( или 0) — изображение, которое занимает всю левую сторону страницы при использовании стилей ClassicStyle или ModernStyle ;
- LogoPixmap ( или 1) — небольшое изображение, отображаемое в правой части заголовка при использовании стилей ClassicStyle или ModernStyle ;
- BannerPixmap ( или 2) — фоновое изображение, отображаемое в заголовке страницы при использовании стиля ModernStyle ;
- BackgroundPixmap ( или 3) — фоновое изображение при использовании стиля MacStyle ;
- IndependentPages — страницы не зависят друг от друга. В этом случае метод initializePage() будет вызван только при первом отображении страницы, а метод cleanupPage() не вызывается;
- IgnoreSubTitles — не отображать описание страницы в заголовке;
- ExtendedWatermarkPixmap — изображение с ролью WatermarkPixmap будет занимать всю левую сторону страницы вплоть до нижнего края окна;
- NoDefaultButton — не делать кнопки Next и Finish кнопками по умолчанию;
- NoBackButtonOnStartPage — не отображать кнопку Back на стартовой странице;
- NoBackButtonOnLastPage — не отображать кнопку Back на последней странице;
- DisabledBackButtonOnLastPage — сделать кнопку Back неактивной на последней странице;
- HaveNextButtonOnLastPage — показать неактивную кнопку Next на последней странице;
- HaveFinishButtonOnEarlyPages — показать неактивную кнопку Finish на непоследних страницах;
- NoCancelButton — не отображать кнопку Cancel ;
- CancelButtonOnLeft — поместить кнопку Cancel слева от кнопки Back (по умолчанию кнопка Cancel расположена справа от кнопок Next и Finish );
- HaveHelpButton — показать кнопку Help ;
- HelpButtonOnRight — поместить кнопку Help у правого края окна;
- HaveCustomButtonl — показать пользовательскую кнопку с ролью CustomButtonl ;
- HaveCustomButton2 — показать пользовательскую кнопку с ролью CustomButton2 ;
- HaveCustomButton3 — показать пользовательскую кнопку с ролью CustomButton3 ;
- NoCancelButtonOnLastPage — не показывать кнопку Cancel на последней странице;
- currentIdChanged (< Идентификатор >) — генерируется при изменении текущей страницы. Внутри обработчика через параметр доступен целочисленный идентификатор текущей страницы;
- customButtonClicked (< Роль >) — генерируется при нажатии кнопок с ролями CustomButtonl , CustomButton2 и CustomButton3 . В параметре доступна целочисленная роль нажатой кнопки;
- helpRequested () — генерируется при нажатии кнопки Help ;
- pageAdded (< Идентификатор >) — генерируется при добавлении страницы. В параметре передается целочисленный идентификатор добавленной страницы;
- pageRemoved (< Идентификатор >) — генерируется при удалении страницы. В параметре передается целочисленный идентификатор удаленной страницы.
На следующем шаге мы рассмотрим класс QWizardPage .
Как сделать кнопку неактивной, если LineEdit пустой, и активной когда в LineEdit введен текст?
Всем привет! Столкнулся с такой ситуацией: в окне есть виджет LineEdit и кнопка. Я хочу чтобы при пустом LineEdit кнопка была неактивной(т.е чтобы не открывалось никакое окно при ее нажатии), а если в LineEdit присутствует текст или числа то кнопка становилась активной. Т.е. кнопка должна работать только тогда, когда в line edit введены какие нибудь символы
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как сделать кнопку активной/неактивной в зависимости от CheckBox?
Есть у меня в форме чекбокс. И если он активен, то и кнопка должна быть активна, а если нет, то и.
Как в objective-c сделать кнопку вначале неактивной а затем активной
Я понимаю что это азы, но тем не менее помогите советом — мне нужно сделать кнопку неактивной.

Как сделать так чтобы при нажатии на кнопку войти выводились данные из двух LineEdit в переменные?
from PyQt6 import QtCore, QtGui, QtWidgets from main import * class Ui_Form(object): def.

Как в зависимости от значения переменной сделать кнопку активной или неактивной?
Как в зависимости от значения переменной сделать кнопку активной или неактивной?
![]()
2885 / 1585 / 512
Регистрация: 21.02.2017
Сообщений: 4,205
Записей в блоге: 1
Velgissen, QLineEdit.textChanged.connect(QPushButton.setEnabled)
Регистрация: 26.03.2022
Сообщений: 27
падает программа, только начинаю вводить значение в поле, сразу падает
Добавлено через 10 минут
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
self.workmenu3_1 = QtWidgets.QFrame(self.frame) #Создали третье рабочее меню(Одиночный) self.workmenu3_1.setGeometry(QtCore.QRect(425, 125, 291, 241)) self.workmenu3_1.setObjectName("workmenu3_1") self.workmenu3_1.setStyleSheet("background-color: #000000; border: 1px solid #ffffff") self.workmenu3_1.setVisible(False) self.pushbutton3_1 = QtWidgets.QPushButton(self.workmenu3_1) self.pushbutton3_1.setGeometry(QtCore.QRect(85, 170, 111, 31)) self.pushbutton3_1.setFont(QtGui.QFont("MS Shell Dlg 2", 14, QtGui.QFont.Bold)) self.pushbutton3_1.setStyleSheet("color: #258c00") self.pushbutton3_1.setObjectName("pushbutton3_1") self.pushbutton3_1.setText("ВВОД(А)") self.label3_1 = QtWidgets.QLabel(self.workmenu3_1) self.label3_1.setGeometry(QtCore.QRect(1, 1, 281, 31)) self.label3_1.setObjectName("label3_1") self.label3_1.setStyleSheet("color: #258c00; border: 0px") self.label3_1.setFont(QtGui.QFont("MS Shell Dlg 2", 15, QtGui.QFont.Bold)) self.label3_1.setText("Введите номер поезда") self.line3_1 = QtWidgets.QLineEdit(self.workmenu3_1) self.line3_1.setObjectName("line3_1") self.line3_1.setGeometry(QtCore.QRect(70, 100, 141, 31)) self.line3_1.setStyleSheet("color: #258c00") self.line3_1.setMaxLength(5) self.line3_1.setFont(QtGui.QFont("MS Shell Dlg 2", 15, QtGui.QFont.Bold)) self.validator3_1 = QIntValidator(self.line3_1) self.validator3_1.setRange(0, 99999) self.line3_1.setValidator(self.validator3_1) self.line3_1.setFocus() self.line3_1.textChanged.connect(self.pushbutton3_1.setEnabled)
Добавлено через 32 секунды
Fudthhh, код отправил сюда
Добавлено через 4 минуты
Fudthhh, код с привязкой кнопки к функции открытия окна отправлять сюда смысла нет, т.к. там обычная привязка clicked.connect(функция)
![]()
2885 / 1585 / 512
Регистрация: 21.02.2017
Сообщений: 4,205
Записей в блоге: 1

Сообщение было отмечено Velgissen как решение
Решение
Velgissen, наверное стоит текст перевести в булево значение, не уж то все надо разжевывать?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
from PySide2 import QtWidgets app = QtWidgets.QApplication() widget = QtWidgets.QWidget() lineEdit = QtWidgets.QLineEdit(widget) pushButton = QtWidgets.QPushButton(". ", widget) pushButton.setDisabled(True) lineEdit.textEdited.connect(lambda text: pushButton.setEnabled(bool(text))) layout = QtWidgets.QHBoxLayout(widget) layout.addWidget(lineEdit) layout.addWidget(pushButton) widget.show() app.exec_()
Неактивная кнопка
Всем привет!
Возник вопрос.
У меня есть lineEdit и pushButton.
Как сделать так, чтобы кнопка становилась неактивной, если lineEdit пустой?
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Включение/выключение(активная/неактивная) кнопки
Добрый день. Прошу помощи понять почему кнопка после выбора файла остаётся неактивной? Вот код: .

Неактивная кнопка
Здравствуйте уважаемые господа программисты, помогите, пожалуйста, зелёному новичку. Необходимо.
неактивная кнопка
Расскажите пожалуйста чайнику как сделать в Билдере кнопку неактивной пока не нажата другая кнопка.
Неактивная кнопка
Здравствуйте. Суть задачи вот в чем: Когда помечаем радиобаттон кнопка должна становится.
![]()
4615 / 2036 / 359
Регистрация: 17.03.2012
Сообщений: 10,102
Записей в блоге: 6
Ну самый очевидный способ — поставить обработчик на lineEdit.textChanged.
167 / 166 / 46
Регистрация: 10.10.2010
Сообщений: 725
Это да, но вот смотрите
у меня есть метод на нажатие, который вызывается, когда я нажимаю на кнопку.
Т.е что-то примерно такое, да?
1 2 3
if lineEdit.textChanged(): self.pushButton.clicked.connect(self.addButton)
![]()
4615 / 2036 / 359
Регистрация: 17.03.2012
Сообщений: 10,102
Записей в блоге: 6

Сообщение было отмечено Rexer как решение
Решение
Нет. Это ж сигнал.
1 2 3 4 5 6
myedit.textChanged.connect(self.on_text_changed) . def on_text_changed(self, text): if text == '': mybutton.setEnabled(False)
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Неактивная кнопка
Прошу помощи ребят. Уже не знаю, как быть. Внизу есть код и скриншоты. По каждому клику на кнопку.
Неактивная кнопка
Как сделать, чтобы кнопка была неактивна, если input пустой? <body> <div >
Неактивная кнопка в MFC
Скажите пожалуйста как сделать кнопку неактивной в MFC. В .NET проще : button->Enabled=false;.
Неактивная кнопка у MessageBox’a
MessageBox(NULL, _T("ЧТО УГОДНО, ТОЛЬКО ЗАКРОЙСЯ"),_T("ЩО-ЗА"), MB_OKCANCEL ); Как сделать кнопу.

Чекбокс и неактивная кнопка
Здравствуйте. У меня возникла проблема которую я не в состоянии решить: сам в кодинге не.
Активная и неактивная кнопка
Здравствуйте! Подскажите, пожалуйста, как установить на кнопку в форме активность кнопки по.