Не получается сделать сортировку слов по столбцам PyQt5
я хочу реализовать сортировку слов по столбцам, однако какую информацию я бы не вводил, всё равно выводит правильный ответ. Почему так происходит?
код:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(688, 548)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(30, 40, 160, 221))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.AnswerLine = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.AnswerLine.setObjectName("AnswerLine")
self.verticalLayout.addWidget(self.AnswerLine)
self.AnswerLine2 = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.AnswerLine2.setObjectName("AnswerLine2")
self.verticalLayout.addWidget(self.AnswerLine2)
self.AnswerLine3 = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.AnswerLine3.setObjectName("AnswerLine3")
self.verticalLayout.addWidget(self.AnswerLine3)
self.AnswerLine4 = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.AnswerLine4.setObjectName("AnswerLine4")
self.verticalLayout.addWidget(self.AnswerLine4)
self.SetButton = QtWidgets.QPushButton(self.centralwidget)
self.SetButton.setGeometry(QtCore.QRect(10, 290, 101, 41))
self.SetButton.setObjectName("SetButton")
self.CheckButton = QtWidgets.QPushButton(self.centralwidget)
self.CheckButton.setGeometry(QtCore.QRect(120, 290, 111, 41))
self.CheckButton.setObjectName("CheckButton")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(20, 420, 341, 91))
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(40, 350, 151, 41))
self.label_2.setObjectName("label_2")
self.verticalLayoutWidget_2 = QtWidgets.QWidget(self.centralwidget)
self.verticalLayoutWidget_2.setGeometry(QtCore.QRect(370, 30, 160, 221))
self.verticalLayoutWidget_2.setObjectName("verticalLayoutWidget_2")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_2)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.AnswerLine_2 = QtWidgets.QLineEdit(self.verticalLayoutWidget_2)
self.AnswerLine_2.setObjectName("AnswerLine_2")
self.verticalLayout_2.addWidget(self.AnswerLine_2)
self.AnswerLine2_2 = QtWidgets.QLineEdit(self.verticalLayoutWidget_2)
self.AnswerLine2_2.setObjectName("AnswerLine2_2")
self.verticalLayout_2.addWidget(self.AnswerLine2_2)
self.AnswerLine3_2 = QtWidgets.QLineEdit(self.verticalLayoutWidget_2)
self.AnswerLine3_2.setObjectName("AnswerLine3_2")
self.verticalLayout_2.addWidget(self.AnswerLine3_2)
self.AnswerLine4_2 = QtWidgets.QLineEdit(self.verticalLayoutWidget_2)
self.AnswerLine4_2.setObjectName("AnswerLine4_2")
self.verticalLayout_2.addWidget(self.AnswerLine4_2)
self.SetButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.SetButton_2.setGeometry(QtCore.QRect(350, 280, 101, 41))
self.SetButton_2.setObjectName("SetButton_2")
self.CheckButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.CheckButton_2.setGeometry(QtCore.QRect(460, 280, 111, 41))
self.CheckButton_2.setObjectName("CheckButton_2")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(390, 340, 151, 41))
self.label_3.setObjectName("label_3")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 688, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
self.SetButton.clicked.connect(self.setanswer)
self.CheckButton.clicked.connect(self.checkanswer)
self.SetButton_2.clicked.connect(self.setanswer2)
self.CheckButton_2.clicked.connect(self.checkanswer2)
def setanswer(self):
self.a = self.AnswerLine.text()
self.b = self.AnswerLine2.text()
self.c = self.AnswerLine3.text()
self.d = self.AnswerLine4.text()
def checkanswer(self):
if str(self.a) == "Car" or "Plane" or "Boat" or "Rocket" and\
str(self.b) == "Car" or "Plane" or "Boat" or "Rocket" and\
str(self.c) == "Car" or "Plane" or "Boat" or "Rocket" and\
str(self.d) == "Car" or "Plane" or "Boat" or "Rocket":
self.label_2.setText("Well done!")
else:
self.label_2.setText("No(")
def setanswer2(self):
self.a1 = self.AnswerLine_2.text()
self.b1 = self.AnswerLine2_2.text()
self.c1 = self.AnswerLine3_2.text()
self.d1 = self.AnswerLine4_2.text()
def checkanswer2(self):
if str(self.a1) == "Building" or "Home" or "Flat" or "Room" and\
str(self.b1) == "Building" or "Home" or "Flat" or "Room" and\
str(self.c1) == "Building" or "Home" or "Flat" or "Room" and\
str(self.d1) == "Building" or "Home" or "Flat" or "Room":
self.label_3.setText("Well Done!")
else:
self.label_3.setText("Please Try Again")
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.SetButton.setText(_translate("MainWindow", "Set Answers"))
self.CheckButton.setText(_translate("MainWindow", "Check Answer"))
self.label.setText(_translate("MainWindow", "List of words: Car, Plane, Boat, Rocket, Building, Home, Flat, Room"))
self.label_2.setText(_translate("MainWindow", "TextLabel"))
self.SetButton_2.setText(_translate("MainWindow", "Set Answers"))
self.CheckButton_2.setText(_translate("MainWindow", "Check Answer"))
self.label_3.setText(_translate("MainWindow", "TextLabel"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Первое, что вы должны запомнить - НИКОГДА НЕ изменяйте модуль созданный в QT Designer. НИКОГДА.
Вы должны воспринимать этот модуль как файл ресурсов.
Создайте класс и наполните его тем что вы создали в QT Designer.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(688, 548)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(30, 40, 160, 221))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.AnswerLine = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.AnswerLine.setObjectName("AnswerLine")
self.verticalLayout.addWidget(self.AnswerLine)
self.AnswerLine2 = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.AnswerLine2.setObjectName("AnswerLine2")
self.verticalLayout.addWidget(self.AnswerLine2)
self.AnswerLine3 = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.AnswerLine3.setObjectName("AnswerLine3")
self.verticalLayout.addWidget(self.AnswerLine3)
self.AnswerLine4 = QtWidgets.QLineEdit(self.verticalLayoutWidget)
self.AnswerLine4.setObjectName("AnswerLine4")
self.verticalLayout.addWidget(self.AnswerLine4)
self.SetButton = QtWidgets.QPushButton(self.centralwidget)
self.SetButton.setGeometry(QtCore.QRect(10, 290, 101, 41))
self.SetButton.setObjectName("SetButton")
self.CheckButton = QtWidgets.QPushButton(self.centralwidget)
self.CheckButton.setGeometry(QtCore.QRect(120, 290, 111, 41))
self.CheckButton.setObjectName("CheckButton")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(20, 420, 341, 91))
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(40, 350, 151, 41))
self.label_2.setObjectName("label_2")
self.verticalLayoutWidget_2 = QtWidgets.QWidget(self.centralwidget)
self.verticalLayoutWidget_2.setGeometry(QtCore.QRect(370, 30, 160, 221))
self.verticalLayoutWidget_2.setObjectName("verticalLayoutWidget_2")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_2)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.AnswerLine_2 = QtWidgets.QLineEdit(self.verticalLayoutWidget_2)
self.AnswerLine_2.setObjectName("AnswerLine_2")
self.verticalLayout_2.addWidget(self.AnswerLine_2)
self.AnswerLine2_2 = QtWidgets.QLineEdit(self.verticalLayoutWidget_2)
self.AnswerLine2_2.setObjectName("AnswerLine2_2")
self.verticalLayout_2.addWidget(self.AnswerLine2_2)
self.AnswerLine3_2 = QtWidgets.QLineEdit(self.verticalLayoutWidget_2)
self.AnswerLine3_2.setObjectName("AnswerLine3_2")
self.verticalLayout_2.addWidget(self.AnswerLine3_2)
self.AnswerLine4_2 = QtWidgets.QLineEdit(self.verticalLayoutWidget_2)
self.AnswerLine4_2.setObjectName("AnswerLine4_2")
self.verticalLayout_2.addWidget(self.AnswerLine4_2)
self.SetButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.SetButton_2.setGeometry(QtCore.QRect(350, 280, 101, 41))
self.SetButton_2.setObjectName("SetButton_2")
self.CheckButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.CheckButton_2.setGeometry(QtCore.QRect(460, 280, 111, 41))
self.CheckButton_2.setObjectName("CheckButton_2")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(390, 340, 151, 41))
self.label_3.setObjectName("label_3")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 688, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
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.SetButton.setText(_translate("MainWindow", "Set Answers"))
self.CheckButton.setText(_translate("MainWindow", "Check Answer"))
self.label.setText(_translate("MainWindow", "List of words: Car, Plane, Boat, Rocket, Building, Home, Flat, Room"))
self.label_2.setText(_translate("MainWindow", "TextLabel"))
self.SetButton_2.setText(_translate("MainWindow", "Set Answers"))
self.CheckButton_2.setText(_translate("MainWindow", "Check Answer"))
self.label_3.setText(_translate("MainWindow", "TextLabel"))
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.SetButton.clicked.connect(self.setanswer)
self.CheckButton.clicked.connect(self.checkanswer)
self.SetButton_2.clicked.connect(self.setanswer2)
self.CheckButton_2.clicked.connect(self.checkanswer2)
self.a, self.b, self.c, self.d = '', '', '', '',
self.list_words = ["Car", "Plane", "Boat", "Rocket"]
self.list_words_2 = ["Building", "Home", "Flat", "Room"]
def setanswer(self):
self.a = self.AnswerLine.text()
self.b = self.AnswerLine2.text()
self.c = self.AnswerLine3.text()
self.d = self.AnswerLine4.text()
def checkanswer(self):
self.setanswer()
if self.a in self.list_words and self.b in self.list_words and\
self.c in self.list_words and self.d in self.list_words:
self.label_2.setText("Well done!")
else:
self.label_2.setText("No(")
def setanswer2(self):
self.a1 = self.AnswerLine_2.text()
self.b1 = self.AnswerLine2_2.text()
self.c1 = self.AnswerLine3_2.text()
self.d1 = self.AnswerLine4_2.text()
def checkanswer2(self):
self.setanswer2()
if self.a1 in self.list_words_2 and self.b1 in self.list_words_2 and\
self.c1 in self.list_words_2 and self.d1 in self.list_words_2:
self.label_3.setText("Well Done!")
else:
self.label_3.setText("Please Try Again")
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
# MainWindow = QtWidgets.QMainWindow()
# ui = Ui_MainWindow()
# ui.setupUi(MainWindow)
# MainWindow.show()
w = MainWindow()
w.show()
sys.exit(app.exec_())
