我正在用PyQt5做我的第一步。我创建了一个简单的对话框"form_main“,其中只有一个菜单:”File“:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction
from PyQt5.QtGui import QIcon
class GUI(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('MyApp')
self.resize(400, 300)
self.statusBar().showMessage('Welcome')
self.add_menus()
def add_menus(self):
menubar = self.menuBar()
file_menu = menubar.addMenu('&File')
exit_action = QAction('&Quit', self)
file_menu.addAction(exit_action) 现在我想从另一个类访问这段代码。在这个类中,我想要定义一个函数,当我点击“File”时会调用这个函数。在第二个文件中,我写道:
from frm_main import GUI
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication
def exit_action():
self.close
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = GUI()
# ui.exit_action.triggered.connect(exit_action)
ui.show()
sys.exit(app.exec_())这段代码正确地显示了我的对话框,但是当我移除注释时,当我尝试将“File”菜单与函数exit_action链接起来时,它就会中断。
有什么提示吗?我如何将菜单连接到函数上?
发布于 2018-04-15 23:13:14
您的代码有以下错误:
frm_main.py
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction
from PyQt5.QtGui import QIcon
class GUI(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('MyApp')
self.resize(400, 300)
self.statusBar().showMessage('Welcome')
self.add_menus()
def add_menus(self):
menubar = self.menuBar()
file_menu = menubar.addMenu('&File')
self.exit_action = QAction('&Quit', self)
file_menu.addAction(self.exit_action) main.py
from frm_main import GUI
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication
def exit_action(widget):
widget.close()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = GUI()
ui.exit_action.triggered.connect(lambda: exit_action(ui))
ui.show()
sys.exit(app.exec_())https://stackoverflow.com/questions/49847633
复制相似问题