Я пытаюсь создать приложение GUI, использующее библиотеку PyQt5, которое принимает матрицу в качестве входных данных и в зависимости от выбранной пользователем опции отображает продукт или сумму.
Теперь я хочу, чтобы пользователь выбрал операцию, которую он хочет сделать (сложение или умножение), выбрав эту опцию на вкладке «Режим» в строке меню (которую я уже кодировал)
import sys
from PyQt5 import QtGui,QtCore, QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class Window(QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setGeometry(100, 100, 596, 226)
self.setMinimumSize(QtCore.QSize(596, 226))
self.setMaximumSize(QtCore.QSize(596, 226))
self.setWindowTitle("Matrix Multiplication")
# Creating the Menu Bar
# Defining 'Modes' Menu option
mainMenu = self.menuBar()
modeMenu = mainMenu.addMenu("&Mode")
# Defining options for 'Mode' Menu and adding them under the 'Mode' Menu
# Matrix Multiplication Mode
MatrixMultiplication_FileAction = QtWidgets.QAction("&Matrix Multiplication", self)
MatrixMultiplication_FileAction.setShortcut("Ctrl+M")
MatrixMultiplication_FileAction.setStatusTip("Activate Matrix Multiplication Module?")
MatrixMultiplication_FileAction.triggered.connect(self.MatrixMultiplication_FileAction_Action) #todo
modeMenu.addAction(MatrixMultiplication_FileAction)
# Matrix Addition Mode
MatrixAddition_FileAction = QtWidgets.QAction("&Matrix Addition", self)
MatrixAddition_FileAction.setShortcut("Ctrl+A")
MatrixAddition_FileAction.setStatusTip("Activate Matrix Addition Module?")
MatrixAddition_FileAction.triggered.connect(self.MatrixAddition_FileAction_Action) #todo
modeMenu.addAction(MatrixAddition_FileAction)
self.statusBar()
self.statusBar().showMessage("Ready")
self.show()
# Intro Message to explain how to use application
message = QtWidgets.QMessageBox.information(self, "Introduction",
"Welcome to the Matrixion App\nTo run calculations, click the Menu Bar\nabove and select desired option")
# Matrix Multiplication Module
def MatrixMultiplication_FileAction_Action(self):
self.statusBar().showMessage("Matrix Multiplication Module is Activated")
# Defining the layout of all objects in Matrix Multiplication Module
# Defining font for Header
font = QtGui.QFont()
font.setPointSize(16)
font.setBold(True)
font.setWeight(75)
# Placing Header
self.label = QtWidgets.QLabel("Matrix Multiplication", self)
self.WindowHeader.setGeometry(QtCore.QRect(-4, 0, 601, 41))
self.WindowHeader.setFont(font)
self.WindowHeader.setAutoFillBackground(True)
self.WindowHeader.setAlignment(QtCore.Qt.AlignCenter)
self.show()
# Matrix Addition Module
def MatrixAddition_FileAction_Action(self):
self.statusBar().showMessage("Matrix Addition Module is Activated")
message = QtWidgets.QMessageBox.critical(self, "Houston, we have a problem!", "This feature hasn't been added yet")
def run():
app = QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())
run()
Я уже использовал self.show () в своей __init __ (self): функции, которую я кодировал в строке меню.
Я думаю, что вызов self.show () снова в MatrixMultiplication_FileAction_Action (self): это проблема, но я не могу понять, как я могу обновить GUI (добавить объекты в макет) с помощью функции, которая вызывается, когда выбрана опция в строке меню.
Я могу заверить, что функция MatrixMultiplication_FileAction_Action (self) действительно вызывается при обновлении подсказки о состоянии. Однако объекты, которые я определил, не отображаются.
Также нет сообщения об ошибке.
ПРИМЕЧАНИЕ. Приложение не завершено, если я могу выяснить, как добавить этот ярлык, я могу добавить и другие объекты