PyQt5 Window wechseln
Verfasst: Sonntag 1. Mai 2022, 15:50
Hi und zwar möchte ich ein Startwindow erstellen welches, auf das drücken verschiedener Buttons reagiert und dann zu einem anderen Window wechselt(dieses Window funktioniert auch einwandfrei)
ich bekomme es nur nicht hin, dass beim drücken des Mathbuttons das Fenster wechselt.
Kann mir bitte irgendjemand helfen? Danke
Hier der Code(graphic):
und hier der Code(start), welcher beim drücken des Mathbuttons graphic ausführen soll:
PS: Ich weiß das die namen graphic und start nicht wirklich bezeichnend gewählt sind.
PPS: Danke für alle antworten
ich bekomme es nur nicht hin, dass beim drücken des Mathbuttons das Fenster wechselt.
Kann mir bitte irgendjemand helfen? Danke
Hier der Code(graphic):
Code: Alles auswählen
import random
import sys
from PyQt5.QtGui import QMovie
from PyQt5 import QtCore, QtGui, QtWidgets
class UiMainWindowMath(object):
def setUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(600, 386)
MainWindow.setMaximumSize(QtCore.QSize(600, 386))
MainWindow.setStyleSheet("background-image: url(School.jpg)")
MainWindow.setInputMethodHints(QtCore.Qt.ImhNoTextHandles)
self.operation = ''
self.level = 1
self.answer = 0
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.check = QtWidgets.QPushButton(self.centralwidget)
self.check.setGeometry(QtCore.QRect(280, 20, 111, 31))
self.check.setAcceptDrops(False)
self.check.setStyleSheet("font: 10pt \"Ravie\";")
self.check.setObjectName("check")
self.check.clicked.connect(self.checked)
self.entry = QtWidgets.QLineEdit(self.centralwidget)
self.entry.setGeometry(QtCore.QRect(420, 80, 141, 31))
self.entry.setStyleSheet("font: 25 16pt \"Bahnschrift Light Condensed\";")
self.entry.setText("")
self.entry.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.entry.setClearButtonEnabled(True)
self.entry.setObjectName("entry")
self.badd = QtWidgets.QToolButton(self.centralwidget)
self.badd.setGeometry(QtCore.QRect(260, 130, 121, 31))
self.badd.setStyleSheet("font: 10pt \"Papyrus\";")
self.badd.setObjectName("badd")
self.badd.clicked.connect(self.add)
self.bsub = QtWidgets.QToolButton(self.centralwidget)
self.bsub.setGeometry(QtCore.QRect(400, 130, 121, 31))
self.bsub.setStyleSheet("font: 10pt \"Papyrus\";")
self.bsub.setObjectName("bsub")
self.bsub.clicked.connect(self.subtract)
self.bmul = QtWidgets.QToolButton(self.centralwidget)
self.bmul.setGeometry(QtCore.QRect(260, 170, 121, 31))
self.bmul.setStyleSheet("font: 10pt \"Papyrus\";")
self.bmul.setObjectName("bmul")
self.bmul.clicked.connect(self.multiply)
self.bdiv = QtWidgets.QToolButton(self.centralwidget)
self.bdiv.setGeometry(QtCore.QRect(400, 170, 121, 31))
self.bdiv.setStyleSheet("font: 10pt \"Papyrus\";")
self.bdiv.setObjectName("bdiv")
self.bdiv.clicked.connect(self.divide)
self.regler = QtWidgets.QSlider(self.centralwidget)
self.regler.setGeometry(QtCore.QRect(20, 80, 160, 22))
self.regler.setSliderPosition(10)
self.regler.setOrientation(QtCore.Qt.Horizontal)
self.regler.setObjectName("regler")
self.regler.valueChanged.connect(self.updateRange)
self.regler.setRange(1, 1000)
self.hard = QtWidgets.QLabel(self.centralwidget)
self.hard.setGeometry(QtCore.QRect(130, 60, 47, 13))
self.hard.setObjectName("hard")
self.easy = QtWidgets.QLabel(self.centralwidget)
self.easy.setGeometry(QtCore.QRect(10, 60, 47, 13))
self.easy.setObjectName("easy")
self.task = QtWidgets.QGroupBox(self.centralwidget)
self.task.setGeometry(QtCore.QRect(400, 10, 171, 61))
self.task.setObjectName("task")
self.tasklabel = QtWidgets.QLabel(self.task)
self.tasklabel.setGeometry(QtCore.QRect(10, 20, 151, 31))
self.tasklabel.setStyleSheet("font: 75 8pt \"MS Shell Dlg 2\";")
self.tasklabel.setText("")
self.tasklabel.setObjectName("tasklabel")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 600, 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", "Learn_Trainer"))
self.check.setText(_translate("MainWindow", "Check"))
self.entry.setPlaceholderText(_translate("MainWindow", "0"))
self.badd.setText(_translate("MainWindow", "Addition"))
self.bsub.setText(_translate("MainWindow", "Subtraction"))
self.bmul.setText(_translate("MainWindow", "Multiplication"))
self.bdiv.setText(_translate("MainWindow", "Dividation"))
self.hard.setText(_translate("MainWindow", "Hard"))
self.easy.setText(_translate("MainWindow", "Easy"))
self.task.setTitle(_translate("MainWindow", "Task"))
def level_task(self, level):
num1 = random.randint(0, level*10)
num2 = random.randint(level, level*10)
if self.operation == 'add':
self.answer = num1 + num2
self.tasklabel.setText(f'{num1} + {num2}')
elif self.operation == 'sub':
if num1 > num2:
self.answer = num1 - num2
self.tasklabel.setText(f'{num1} - {num2}')
if num1 < num2:
self.answer = num2 - num1
self.tasklabel.setText(f'{num2} - {num1}')
elif self.operation == 'mul':
self.answer = num1 * num2
self.tasklabel.setText(f'{num1} * {num2}')
elif self.operation == 'div':
run = False
while not run:
num1 = random.randint(1, level * 10)
num2 = random.randint(level, level * 10)
if num1 > num2 and num1 % num2 == 0:
self.answer = num1 / num2
self.tasklabel.setText(f'{num1} / {num2}')
run = True
elif num1 < num2 and num2 % num1 == 0:
self.answer = num2 / num1
self.tasklabel.setText(f'{num2} / {num1}')
run = True
else:
self.tasklabel.setText('Choose an operation')
def updateRange(self, value):
self.level = value
return self.level
def add(self):
self.operation = 'add'
self.level_task(self.level)
def subtract(self):
self.operation = 'sub'
self.level_task(self.level)
def multiply(self):
self.operation = 'mul'
self.level_task(self.level)
def divide(self):
self.operation = 'div'
self.level_task(self.level)
def checked(self):
try:
if self.answer == int(self.entry.text()):
self.tasklabel.setText('Correct')
self.movie = QMovie("winner.gif")
self.tasklabel.setMovie(self.movie)
self.movie.start()
else:
self.tasklabel.setText(f'Wrong, correct: {self.answer}')
except:
self.tasklabel.setText(f'Wrong, correct: {self.answer}')
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = UiMainWindowMath()
ui.setUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Code: Alles auswählen
from graphic import *
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(581, 388)
MainWindow.setStyleSheet("background-color: qlineargradient(spread:pad, x1:0.472, y1:0.494, x2:1, y2:1, stop:0 rgba(0, 47, 21, 255), stop:1 rgba(255, 255, 255, 255));")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
self.groupBox.setGeometry(QtCore.QRect(10, 10, 571, 331))
self.groupBox.setStyleSheet("background-image: url(:/newPrefix/front.jpg);\n"
"font: 22pt \"Old English Text MT\";\n"
"color: rgb(255, 255, 255);")
self.groupBox.setObjectName("groupBox")
self.commandLinkButton = QtWidgets.QCommandLinkButton(self.groupBox)
self.commandLinkButton.setGeometry(QtCore.QRect(110, 110, 111, 41))
self.commandLinkButton.setStyleSheet("background-image: url(:/newPrefix/yellow.jpg);\n"
"color: rgb(0, 0, 0);\n"
"font: 10pt \"Ravie\";\n"
"background-color: rgb(255, 247, 17);")
self.commandLinkButton.setObjectName("commandLinkButton")
self.commandLinkButton.clicked.connect(self.english)
self.line = QtWidgets.QFrame(self.groupBox)
self.line.setGeometry(QtCore.QRect(250, 100, 3, 61))
self.line.setStyleSheet("background-color: rgb(8, 8, 8);")
self.line.setFrameShape(QtWidgets.QFrame.VLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.commandLinkButton_2 = QtWidgets.QCommandLinkButton(self.groupBox)
self.commandLinkButton_2.setGeometry(QtCore.QRect(290, 110, 91, 41))
self.commandLinkButton_2.setStyleSheet("font: 10pt \"Ravie\";\n"
"color: rgb(7, 7, 7);\n"
"background-image: url(:/newPrefix/blue.png);\n"
"background-color: rgb(0, 0, 255);")
self.commandLinkButton_2.setObjectName("commandLinkButton_2")
self.commandLinkButton_2.clicked.connect(self.math)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 581, 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.groupBox.setTitle(_translate("MainWindow", "STDUY"))
self.commandLinkButton.setText(_translate("MainWindow", "English"))
self.commandLinkButton_2.setText(_translate("MainWindow", "Math"))
def math(self):
MainWindow = QtWidgets.QMainWindow()
self.mwindow = UiMainWindowMath()
self.mwindow.setUi(MainWindow)
self.mwindow.show()
def english(self):
pass
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_())
PPS: Danke für alle antworten