我正在尝试使用PyQt5库创建GUI应用程序,该库将矩阵作为输入,并根据用户选择的选项显示乘积或总和
现在,我希望用户选择他们想要做的操作(加法或乘法)的方式是在菜单栏的模式选项卡下选择该选项(我已经在菜单栏中进行了编码)
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()
我已经在我的_init__(self):函数中使用了self.show(),我在菜单栏中对其进行了编码
我认为在MatrixMultiplication\u FileAction\u Action(self):中再次调用self.show()是个问题,但我无法理解如何使用一个函数来更新GUI(将对象添加到布局中),该函数是在选择菜单栏中的选项时调用的
我可以保证在更新状态提示时,确实会调用函数MatrixMultiplication\u FileAction\u Action(self)。但是,我定义的对象不会出现
也没有错误消息
注意:应用程序还没有完成,如果我能弄清楚如何添加这个标签,我也可以添加其他对象
正如它在Qt Main Window Framework中所说的,不支持创建没有中心小部件的主窗口。您必须有一个中心小部件,即使它只是一个占位符为了查看QLabel,构造一个QWidget作为主窗口的中心小部件。您可能还希望使用布局管理器来处理小部件的位置
self.grid
是指向中央小部件上设置的QGridLayout的指针。因此,在MatrixMultiplication函数中,构造没有父对象的QLabel,然后将其添加到布局中结果:
相关问题 更多 >
编程相关推荐