从另一个窗口调用QDialog

时间:2018-01-18 10:29:42

标签: python-3.x dialog pyqt5 qdialog

我正在编写一个用于数据库处理的小应用程序,并且我认为我尝试了pyqt5,因为我从(非常古老的)过去有一些PySide的经验。到目前为止,它就像一个魅力,但现在我想打开一个对话框,如果用户决定创建一个新的数据库条目。这发生在QMainWindow上。旁注:我的意图是使用Dialog模式,这样两个小部件就可以同时存在。

问题是,只要我点击应该打开对话框的按钮,我的程序就会毫无例外地终止。我在这里有点不知所措......

这是我写的测试对话:

class ColorDialog(QDialog):
    def __init__(self, Color=None, parent=None):
        super(self).__init__(parent)
        self.result = ""

        layout = QVBoxLayout()
        btn_ok = QPushButton("OK", self)
        layout.addWidget(btn_ok)
        btn_ok.clicked.connect(self._ok)

        self.setLayout(layout)
        self.setGeometry(200, 200, 200, 200)

    def _ok(self):
        self.result = "1"

    def get_result(self):
        return self.result

我用以下方法调用此对话框:

def _new_color(self):
    cp = ColorDialog(self)
    cp.exec_()
    print(cp.get_result())

我也试过show()而不是exec_()来达到同样的效果。

主窗口的调用如下:

def main():

    db = DBService()
    app = QApplication(sys.argv)
    UI = MainWindow(db, "eng")
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

我在这里做错了什么?我觉得我错过了一些基本的东西...... 谢谢你的帮助

0 个答案:

没有答案