PyQt的:Accesing主窗口从对话框的数据?(PyQt: Accesing Main Wind

2019-09-21 03:51发布

所以,我使用Python和PyQt的。 我有一个包含QTableWidget的一个主窗口,打开模态,并有一些QLineEdit的小窗口的对话框......好吧,到目前为止,但我有2个问题:

  1. 当对话框打开,我的主窗口冻结了,我真的不喜欢那个...

  2. 我想,当我完成编辑QLineEdit的是,该计划将搜索QTableWidget的,如果从QLineEdit的文本的表存在,一个对话框会弹出,informe有关。 这是一般的想法。 但是,到目前为止,我似乎只能创建一个新的QTableWidget的情况下,我不能从现有的使用数据...

我可以做这些是什么?

Answer 1:

你写了:

并打开一个模态对话框

接着:

当对话框打开,我的主窗口冻结

该文档说 :

int QDialog::exec () [slot]

显示对话框,模态对话框,阻塞,直到用户关闭它。 该函数返回一个DialogCode结果。 如果对话框是应用模式,用户无法在同一应用程序的任何其他窗口直到关闭对话框交互。

如果对话框是窗口模式,而对话框打开只与父窗口的互动被阻止。 默认情况下,该对话框是应用模式。

关于非模态对话框 :

模式对话框的是,在相同的应用程序独立于其他窗口的操作的对话框。 在文字处理器查找和替换对话框往往是无模式,允许用户同时与应用程序的主窗口,并与对话互动。

非模态对话框显示使用show()后者立即返回控制给调用者。

一个例子:

import sys
from PyQt4 import QtCore, QtGui


class SearchDialog(QtGui.QDialog):

    def __init__(self, parent = None):
        QtGui.QDialog.__init__(self, parent)
        self.setWindowTitle('Search')
        self.searchEdit = QtGui.QLineEdit()
        layout = QtGui.QVBoxLayout()
        layout.addWidget(self.searchEdit)
        self.setLayout(layout)


class MainWindow(QtGui.QDialog):

    def __init__(self):
        QtGui.QDialog.__init__(self, None)
        self.resize(QtCore.QSize(320, 240))
        self.setWindowTitle('Main window')
        self.logText = QtGui.QPlainTextEdit()
        searchButton = QtGui.QPushButton('Search')
        layout = QtGui.QVBoxLayout()
        layout.addWidget(self.logText)
        layout.addWidget(searchButton)
        self.setLayout(layout)
        searchButton.clicked.connect(self.showSearchDialog)

    def showSearchDialog(self):
        searchDialog = SearchDialog(self)
        searchDialog.show()
        searchDialog.searchEdit.returnPressed.connect(self.onSearch)

    def onSearch(self):
        self.logText.appendPlainText(self.sender().text())



def main():
    app = QtGui.QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    app.exec_()

if __name__ == "__main__":
    main()

点击“搜索”打开搜索窗口(你可以打开几个)。 输入要搜索的文本,然后按Enter。 要搜索的文本将被添加到日志中的主窗口。



文章来源: PyQt: Accesing Main Window's Data from a dialog?