这个问题在这里已有答案:
我正在尝试启动以下代码。 “应用程序”窗口打开,但只要单击该按钮,窗口就会崩溃。
import sys
from qtpy import QtWidgets
from src.ui.mainwindow import Ui_MainWindow
from src.Run_OMD_Process import run_omd
app = QtWidgets.QApplication(sys.argv)
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent = None):
super().__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.setWindowTitle("OMD Tool")
print("MainWindow")
self.ui.pushButton.clicked.connect(self.onPushOmdButton)
# self.ui.pushButton_2.clicked.connect(self.exitUi)
def onPushOmdButton(self):
self.ui.pushButton.clicked.connect(run_omd())
window = MainWindow()
window.show()
sys.exit(app.exec_())
当你将它连接到run_omd
中的按钮时,你将onPushOmdButton
调用中的括号留下了它会崩溃。
尝试:
self.ui.pushButton.clicked.connect(run_omd)
此方法也只是将按钮重新连接到其他功能。所以基本上,你必须点击两次按钮才能得到我相信你所追求的结果。我不确定这是不是你想要的。
我同意MalloyDekacroix的观点:
import sys
from pyqt import QtWidgets
from src.ui.mainwindow import Ui_MainWindow
from src.Run_OMD_Process import run_omd
app = QtWidgets.QApplication(sys.argv)
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent = None):
super().__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.setWindowTitle("OMD Tool")
print("Main`enter code here`Window")
self.ui.pushButton.clicked.connect(self.onPushOmdButton)
# self.ui.pushButton_2.clicked.connect(self.exitUi)
def onPushOmdButton(self):
// i.e. this could so something else.
// for instance, open a new window.
// perform a calculation.
// As your code I also feel requires the user to click again.
window = MainWindow()
window.show()
sys.exit(app.exec_())