Форум сайта python.su
Всем привет.
Есть два окна. Во втором ввожу число и передаю его в первое.
Как сделать проверку (int or float) во втором окне класс Proba_win_2(QtWidgets.QDialog) сообразить не смог. Делаю ее в основном окне, но всплывающее окно QMessageBox.information принимает класс основного окна (салатовый фон).
Подскажите, пожалуйста, как сделать стиль всплывающего окна QMessageBox.information нейтральным (или задать самому). Спасибо!
from PyQt5 import QtCore, QtGui, QtWidgets import sys class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(661, 317) MainWindow.setStyleSheet("background-color: rgb(170, 170, 0);") self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(60, 70, 121, 31)) self.pushButton.setStyleSheet("background-color: rgb(255, 85, 0);") self.pushButton.setObjectName("pushButton") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(310, 80, 201, 31)) self.label.setStyleSheet("background-color: rgb(0, 255, 255);") self.label.setText("") self.label.setObjectName("label") MainWindow.setCentralWidget(self.centralwidget) 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.pushButton.setText(_translate("MainWindow", "Выбрать")) class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(400, 300) self.buttonBox = QtWidgets.QDialogButtonBox(Dialog) self.buttonBox.setGeometry(QtCore.QRect(30, 240, 341, 32)) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) self.buttonBox.setObjectName("buttonBox") self.lineEdit = QtWidgets.QLineEdit(Dialog) self.lineEdit.setGeometry(QtCore.QRect(50, 30, 161, 31)) self.lineEdit.setObjectName("lineEdit") self.retranslateUi(Dialog) self.buttonBox.accepted.connect(Dialog.accept) self.buttonBox.rejected.connect(Dialog.reject) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) class Proba_osn_win(QtWidgets.QMainWindow): def __init__(self): super(Proba_osn_win, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.pushButton.clicked.connect(self.win_2_otkr) def win_2_otkr(self): self.application = Proba_win_2() result = self.application.exec() if result == QtWidgets.QDialog.Accepted: if self.application.znach.isdigit(): self.ui.label.setText(self.application.znach) elif self.application.znach.count('.') == 1 and self.application.znach.replace('.', '').isdigit(): self.ui.label.setText(str(float(self.application.znach) * 2)) else: QtWidgets.QMessageBox.information(self, "ВНИМАНИЕ!", 'Вы ввели недопустимое значение!') class Proba_win_2(QtWidgets.QDialog): def __init__(self): super(Proba_win_2, self).__init__() self.ui = Ui_Dialog() self.ui.setupUi(self) self.ui.lineEdit.textChanged[str].connect(self.vyb) self.ui.buttonBox.clicked.connect(self.accept) def vyb(self, item): self.znach = item app = QtWidgets.QApplication([]) application = Proba_osn_win() application.show() sys.exit(app.exec())
Офлайн
В классе Ui_MainWindow поправьте:
MainWindow.setStyleSheet("QMainWindow{background-color: rgb(170, 170, 0);}")
Офлайн