I wrote code for a board game application to randomly select a team based on the components available to the players. The code with the TkInter add-on works correctly, it is formed as needed, but the interface does not suit, so I decided to do it using QtDesigner. Created a set of three windows. The main one and two dialogs. In the main window, I configure the components, launch the dialogs, and that's it, not a single widget is activated, data is not read from them. I can't figure out what the error is, what syntax should be used to run it. I seem to be following the instructions. Please indicate what is wrong?
import sys
import random
from PyQt5.QtWidgets import QApplication, QDialog, QMainWindow
from menu1 import Ui_MainWindow
from menu2 import Ui_Dialog
global clicks, warriors, magics, scouts, healers, CardOL, Special_W, Special_M, Special_S, Special_H
class menu1(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.Ui = Ui_MainWindow()
self.Ui.setupUi(self)
self.show()
self.Ui.pushButton.clicked.connect(self.setup_games)
self.Ui.pushButton_3.clicked.connect(self.select_all)
self.Ui.pushButton_4.clicked.connect(self.reset_all)
def select_all(self):
self.Ui.checkBox_1.setChecked(True)
self.Ui.checkBox_2.setChecked(True)
def reset_all(self):
self.Ui.checkBox_1.setChecked(False)
self.Ui.checkBox_2.setChecked(False)
# A dialog box opens with the checkbox and push button widgets for working with additional lists.
def setup_games(self):
self.menu2 = QDialog()
self.ui_menu2 = Ui_Dialog()
self.ui_menu2.setupUi(self.menu2)
self.menu2.show()
class menu2(QDialog):
def __init__(self):
super().__init__()
self.Ui = Ui_Dialog()
self.Ui.setupUi(self)
self.Ui.pushButton_3.clicked.connect(self.reset_all_W)
self.Ui.pushButton_4.clicked.connect(self.select_all_W)
def select_all_W(self):
self.Ui.checkBox_2.setChecked(True)
self.Ui.checkBox_3.setChecked(True)
def reset_all_W(self):
self.Ui.checkBox_2.setChecked(False)
self.Ui.checkBox_3.setChecked(False)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = menu1()
window.show()
sys.exit(app.exec_())
Here is the dialog box code:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.setWindowModality(QtCore.Qt.ApplicationModal)
Dialog.resize(536, 526)
Dialog.setStyleSheet("font: 57 10pt \"Windlass\";")
self.tabWidget = QtWidgets.QTabWidget(Dialog)
self.tabWidget.setGeometry(QtCore.QRect(10, 10, 501, 441))
self.tabWidget.setStyleSheet("font: 57 10pt \"Windlass\";\n"
"background-color: rgb(149, 154, 255);\n"
"")
self.tabWidget.setTabBarAutoHide(True)
self.tabWidget.setObjectName("tabWidget")
self.tab = QtWidgets.QWidget()
self.tab.setAutoFillBackground(False)
self.tab.setStyleSheet("background-color: rgb(255, 169, 166);\n"
"")
self.tab.setObjectName("tab")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tab)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.formLayout = QtWidgets.QFormLayout()
self.formLayout.setHorizontalSpacing(100)
self.formLayout.setVerticalSpacing(11)
self.formLayout.setObjectName("formLayout")
self.checkBox_2 = QtWidgets.QCheckBox(self.tab)
self.checkBox_2.setStyleSheet("color: rgb(0, 0, 0);")
self.checkBox_2.setObjectName("checkBox_2")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.checkBox_2)
self.checkBox_9 = QtWidgets.QCheckBox(self.tab)
self.checkBox_9.setStyleSheet("color: rgb(0, 0, 0);")
self.checkBox_9.setObjectName("checkBox_9")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.checkBox_9)
self.checkBox_3 = QtWidgets.QCheckBox(self.tab)
self.checkBox_3.setStyleSheet("color: rgb(0, 0, 0);")
self.checkBox_3.setObjectName("checkBox_3")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.checkBox_3)
self.checkBox_10 = QtWidgets.QCheckBox(self.tab)
self.checkBox_10.setStyleSheet("color: rgb(0, 0, 0);\n"
"")
self.checkBox_10.setObjectName("checkBox_10")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.checkBox_10)
self.checkBox_4 = QtWidgets.QCheckBox(self.tab)
self.checkBox_4.setStyleSheet("color: rgb(0, 0, 0);")
self.checkBox_4.setObjectName("checkBox_4")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.checkBox_4)
self.checkBox_11 = QtWidgets.QCheckBox(self.tab)
self.checkBox_11.setStyleSheet("color: rgb(0, 0, 0);")
self.checkBox_11.setObjectName("checkBox_11")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.checkBox_11)
self.checkBox_5 = QtWidgets.QCheckBox(self.tab)
self.checkBox_5.setStyleSheet("color: rgb(0, 0, 0);")
self.checkBox_5.setObjectName("checkBox_5")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.checkBox_5)
self.checkBox_12 = QtWidgets.QCheckBox(self.tab)
self.checkBox_12.setStyleSheet("color: rgb(0, 0, 0);")
self.checkBox_12.setObjectName("checkBox_12")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.checkBox_12)
self.checkBox_6 = QtWidgets.QCheckBox(self.tab)
self.checkBox_6.setStyleSheet("color: rgb(0, 0, 0);")
self.checkBox_6.setObjectName("checkBox_6")
self.formLayout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.checkBox_6)
self.checkBox_13 = QtWidgets.QCheckBox(self.tab)
self.checkBox_13.setStyleSheet("color: rgb(0, 0, 0);")
self.checkBox_13.setObjectName("checkBox_13")
self.formLayout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.checkBox_13)
self.checkBox_7 = QtWidgets.QCheckBox(self.tab)
self.checkBox_7.setStyleSheet("color: rgb(0, 0, 0);")
self.checkBox_7.setObjectName("checkBox_7")
self.formLayout.setWidget(5, QtWidgets.QFormLayout.LabelRole, self.checkBox_7)
self.checkBox_14 = QtWidgets.QCheckBox(self.tab)
self.checkBox_14.setStyleSheet("color: rgb(0, 0, 0);")
self.checkBox_14.setObjectName("checkBox_14")
self.formLayout.setWidget(5, QtWidgets.QFormLayout.FieldRole, self.checkBox_14)
self.checkBox_8 = QtWidgets.QCheckBox(self.tab)
self.checkBox_8.setStyleSheet("color: rgb(0, 0, 0);")
self.checkBox_8.setObjectName("checkBox_8")
self.formLayout.setWidget(6, QtWidgets.QFormLayout.SpanningRole, self.checkBox_8)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.pushButton_4 = QtWidgets.QPushButton(self.tab)
self.pushButton_4.setStyleSheet("background-color: rgb(170, 255, 127);")
self.pushButton_4.setObjectName("pushButton_4")
self.horizontalLayout.addWidget(self.pushButton_4)
self.pushButton_3 = QtWidgets.QPushButton(self.tab)
self.pushButton_3.setStyleSheet("background-color: rgb(255, 119, 119);")
self.pushButton_3.setObjectName("pushButton_3")
self.horizontalLayout.addWidget(self.pushButton_3)
self.formLayout.setLayout(7, QtWidgets.QFormLayout.FieldRole, self.horizontalLayout)
self.verticalLayout_2.addLayout(self.formLayout)
self.tabWidget.addTab(self.tab, "")
self.tab_2 = QtWidgets.QWidget()
self.tab_2.setStyleSheet("background-color: rgb(255, 252, 152);\n"
"")
self.tab_2.setObjectName("tab_2")
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.tab_2)
self.verticalLayout_4.setObjectName("verticalLayout_4")
self.tabWidget.addTab(self.tab_2, "")
self.tab_3 = QtWidgets.QWidget()
self.tab_3.setStyleSheet("background-color: rgb(143, 255, 143);\n"
"")
self.tab_3.setObjectName("tab_3")
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.tab_3)
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.tabWidget.addTab(self.tab_3, "")
self.tab_4 = QtWidgets.QWidget()
self.tab_4.setStyleSheet("background-color: rgb(136, 230, 250);")
self.tab_4.setObjectName("tab_4")
self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.tab_4)
self.verticalLayout_6.setObjectName("verticalLayout_6")
self.verticalLayout_3 = QtWidgets.QVBoxLayout()
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.verticalLayout_6.addLayout(self.verticalLayout_3)
self.tabWidget.addTab(self.tab_4, "")
self.tab_5 = QtWidgets.QWidget()
self.tab_5.setObjectName("tab_5")
self.tabWidget.addTab(self.tab_5, "")
self.pushButton = QtWidgets.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(330, 460, 169, 27))
self.pushButton.setStyleSheet("background-color: rgb(255, 255, 255);")
self.pushButton.setObjectName("pushButton")
self.retranslateUi(Dialog)
self.tabWidget.setCurrentIndex(0)
self.pushButton.clicked.connect(Dialog.accept) # type: ignore
QtCore.QMetaObject.connectSlotsByName(Dialog)
Dialog.setTabOrder(self.tabWidget, self.checkBox_2)
Dialog.setTabOrder(self.checkBox_2, self.checkBox_3)
Dialog.setTabOrder(self.checkBox_3, self.checkBox_4)
Dialog.setTabOrder(self.checkBox_4, self.checkBox_5)
Dialog.setTabOrder(self.checkBox_5, self.checkBox_6)
Dialog.setTabOrder(self.checkBox_6, self.checkBox_7)
Dialog.setTabOrder(self.checkBox_7, self.checkBox_8)
Dialog.setTabOrder(self.checkBox_8, self.checkBox_9)
Dialog.setTabOrder(self.checkBox_9, self.checkBox_10)
Dialog.setTabOrder(self.checkBox_10, self.checkBox_11)
Dialog.setTabOrder(self.checkBox_11, self.checkBox_12)
Dialog.setTabOrder(self.checkBox_12, self.checkBox_13)
Dialog.setTabOrder(self.checkBox_13, self.checkBox_14)
Dialog.setTabOrder(self.checkBox_14, self.pushButton_4)
Dialog.setTabOrder(self.pushButton_4, self.pushButton_3)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.checkBox_2.setText(_translate("Dialog", "Карнон"))
self.checkBox_9.setText(_translate("Dialog", "Однолапый"))
self.checkBox_3.setText(_translate("Dialog", "Корбин"))
self.checkBox_10.setText(_translate("Dialog", "Стальные рога"))
self.checkBox_4.setText(_translate("Dialog", "Круцбек"))
self.checkBox_11.setText(_translate("Dialog", "Сэр Валадир"))
self.checkBox_5.setText(_translate("Dialog", "Лорд Хартон"))
self.checkBox_12.setText(_translate("Dialog", "Талия"))
self.checkBox_6.setText(_translate("Dialog", "Мордог"))
self.checkBox_13.setText(_translate("Dialog", "Тренлой Сильный"))
self.checkBox_7.setText(_translate("Dialog", "Нанок-Клинок"))
self.checkBox_14.setText(_translate("Dialog", "Элиам"))
self.checkBox_8.setText(_translate("Dialog", "Нара-Клык"))
self.pushButton_4.setText(_translate("Dialog", "Хочу всех!"))
self.pushButton_3.setText(_translate("Dialog", "Не хочу всех!"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Dialog", "Воины"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("Dialog", "Маги"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("Dialog", "Разведчики"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("Dialog", "Поддержка"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_5), _translate("Dialog", "Адьютанты"))
self.pushButton.setText(_translate("Dialog", "Возвертаться"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
I deleted most of the code with the lists and their analysis. If you move the buttons and checkboxes to the main window, then the functions work as expected, everything is activated.
There is only one problem: the button or the checkbox in the dialog box is not activated.