【问题标题】:PyQt window crashes after launch [duplicate]PyQt窗口在启动后崩溃[重复]
【发布时间】:2018-08-28 02:38:44
【问题描述】:

我正在尝试启动以下代码。应用程序窗口打开,但只要我单击按钮,窗口就会崩溃。

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_())

【问题讨论】:

    标签: pyqt pyqt5


    【解决方案1】:

    当您将run_omd 连接到onPushOmdButton 中的按钮时,它会崩溃,因为您在run_omd 调用中留下了括号。

    试试:

    self.ui.pushButton.clicked.connect(run_omd)
    

    此方法也只是将按钮重新连接到不同的功能。所以基本上,你必须点击按钮两次才能得到我相信你所追求的结果。我不确定这是否是您想要的。

    【讨论】:

      【解决方案2】:

      我同意 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_())
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-02
        • 2017-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多