GF
Glep Fingerman10 января 2021 г. 11:52
Сигналы и слоты в PyQt5
Пример тестового интерфейса с описанием подключения слота и сигнала, но оно не срабатывает по непонятным причинам.
import sys, binascii, glob, asyncio from PyQt5.QtCore import QObject, pyqtSlot, QDateTime, Qt, QTimer from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import (QApplication, QCheckBox, QComboBox, QDateTimeEdit, QDial, QDialog, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLineEdit, QProgressBar, QPushButton, QRadioButton, QScrollBar, QSizePolicy, QSlider, QSpinBox, QStyleFactory, QTableWidget, QTabWidget, QTextEdit, QVBoxLayout, QWidget, QMainWindow, QMessageBox) class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow"); MainWindow.resize(400, 300); self.centralWidget = QtWidgets.QWidget(MainWindow); self.centralWidget.setObjectName("centralWidget"); self.gridLayout = QtWidgets.QGridLayout(self.centralWidget); self.gridLayout.setContentsMargins(11,11,11,11); self.gridLayout.setSpacing(6); self.gridLayout.setObjectName("gridLayout"); self.verticalLayout = QtWidgets.QVBoxLayout(); self.verticalLayout.setSpacing(6); self.verticalLayout.setObjectName("verticalLayout"); self.pushButtonFirst = QtWidgets.QPushButton(self.centralWidget); self.pushButtonFirst.setObjectName("pushButtonFirst");self.verticalLayout.addWidget(self.pushButtonFirst); self.pushButtonSecond = QtWidgets.QPushButton(self.centralWidget); self.pushButtonSecond.setObjectName("pushButtonSecond");self.verticalLayout.addWidget(self.pushButtonSecond); self.checkBox = QtWidgets.QCheckBox(self.centralWidget); self.checkBox.setObjectName("checkBox"); self.verticalLayout.addWidget(self.checkBox); self.lineEdit = QtWidgets.QLineEdit(self.centralWidget); self.lineEdit.setObjectName("lineEdit"); self.verticalLayout.addWidget(self.lineEdit); self.gridLayout.addLayout(self.verticalLayout,0,0,1,1);MainWindow.setCentralWidget(self.centralWidget); self.menuBar = QtWidgets.QMenuBar(MainWindow);self.menuBar.setGeometry(QtCore.QRect(0,0,400,21)); self.menuBar.setObjectName("menuBar");MainWindow.setMenuBar(self.menuBar); self.mainToolBar = QtWidgets.QToolBar(MainWindow);self.mainToolBar.setObjectName("mainToolBar"); MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar); self.statusBar = QtWidgets.QStatusBar(MainWindow);self.statusBar.setObjectName("statusBar"); MainWindow.setStatusBar(self.statusBar);self.retranslateUi(MainWindow); QtCore.QMetaObject.connectSlotsByName(MainWindow); def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.pushButtonFirst.setText(_translate("MainWindow", "PushButton")) self.pushButtonSecond.setText(_translate("MainWindow", "PushButton")) self.checkBox.setText(_translate("MainWindow", "CheckBox")) class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent); self.setupUi(self); self.pushButtonFirst.released.connect(self.pushButtonClicked) #self.pushButtonFirst.clicked.connect(self.pushButtonClicked) @QtCore.pyqtSlot() def pushButtonClicked(self): try: sender = self.sender(); self.statusBar().showMessage(sender.text() + ' was pressed') msg = QMessageBox(); msg.setIcon(QMessageBox.Information); msg.setText("This is a message box"); msg.setInformativeText("This is additional information"); msg.setWindowTitle("MessageBox demo"); msg.setDetailedText("The details are as follows:"); msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel); msg.exec_(); except Exception as e: return str(e); if __name__ == "__main__": app=QtWidgets.QApplication(sys.argv); w=MainWindow(); w.show(); sys.exit(app.exec_())
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Пожалуйста, авторизуйтесь или зарегистрируйтесь
d
- dsfs
- 26 апреля 2024 г. 13:56
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80баллов,
- Очки рейтинга4
d
- dsfs
- 26 апреля 2024 г. 13:35
C++ - Тест 001. Первая программа и типы данных
- Результат:73баллов,
- Очки рейтинга1
Последние комментарии
Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Анатолий Кононенко5 февраля 2024 г. 11:50
EVA25 декабря 2023 г. 20:30
Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
Сейчас обсуждают на форуме
BlinCT5 мая 2024 г. 14:46
BlinCT5 мая 2024 г. 14:44
Best Indian Food Restaurant In Cincinnati OH Ready to embark on a gastronomic journey like no other? Join us at App india restaurant and discover why we're renowned as the Best Indian Food Restaurant In Cincinnati OH . Whether y…
Evgenii Legotckoi2 мая 2024 г. 23:07
IscanderChe30 апреля 2024 г. 13:22
Попробуйте сделать всю работу с одном в одном классе. И лучше проверяйте нажатие кнопки.
Решение стало следующим: после конвертации файла Ui из QtDesigner мне никак не выгодно продолжать работать в этом же файле, т.к. я постоянно продолжаю дорабатывать интерфейс, а его поведение я описываю в другом файле, поэтому я делаю следующее описание
Затем я создаю класс, в котором описываю подключение интерфейса и создание слотов для элементов управления
В таком случае я безпрепятственно постоянно могу корректировать интерфейс и безпрепятственно ориентироваться в другом классе для управления поведением новыми элементами управления.