Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt:访问主窗口';从对话框中删除数据?_Python_Pyqt_Qdialog_Qmainwindow - Fatal编程技术网

Python PyQt:访问主窗口';从对话框中删除数据?

Python PyQt:访问主窗口';从对话框中删除数据?,python,pyqt,qdialog,qmainwindow,Python,Pyqt,Qdialog,Qmainwindow,所以,我正在使用Python和PyQt。我有一个主窗口,其中包含一个QTableWidget和一个对话框,该对话框以模块方式打开,其中包含一些QLineEdit小部件。。。到目前为止还行,但我有两个问题: 当对话框打开时,我的主窗口冻结,我真的不喜欢这样 我想要的是,当我编辑完QLineEdit后,程序将搜索QTableWidget,如果来自QLineEdit的文本存在于表中,将出现一个对话框并通知我。这是总的想法。但是,到目前为止,我似乎只能创建一个新的QTableWidget实例,而且我无法

所以,我正在使用Python和PyQt。我有一个主窗口,其中包含一个QTableWidget和一个对话框,该对话框以模块方式打开,其中包含一些QLineEdit小部件。。。到目前为止还行,但我有两个问题:

  • 当对话框打开时,我的主窗口冻结,我真的不喜欢这样

  • 我想要的是,当我编辑完QLineEdit后,程序将搜索QTableWidget,如果来自QLineEdit的文本存在于表中,将出现一个对话框并通知我。这是总的想法。但是,到目前为止,我似乎只能创建一个新的QTableWidget实例,而且我无法使用现有的数据

  • 我能为这些做些什么

    你写道:

    以及一个以模式打开的对话框

    然后:

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

    文件:

    intqdialog::exec()[slot]

    将对话框显示为模式对话框, 阻止,直到用户关闭它。该函数返回一个
    对话框code
    结果。如果对话框为应用程序模式,则用户无法与 同一应用程序中的任何其他窗口,直到它们关闭对话框为止

    如果对话框是窗口模式,则仅与父窗口交互 对话框打开时被阻止。默认情况下,该对话框为 应用模式

    关于:

    无模式对话框是一种独立于其他对话框运行的对话框 同一应用程序中的windows。在中查找和替换对话框 字处理器通常是无模式的,以允许用户与 应用程序的主窗口和对话框

    无模式 对话框是使用
    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键。要搜索的文本将添加到主窗口中的日志中。

    在接受无模式对话框后,如何从该对话框中获取数据?
    QDialog
    has signal。连接到它。是的,但是,因为主窗口和QDialog属于不同的类,所以数据混淆了…对不起,我不理解你的问题。你能写一个小的,独立的例子吗。。。我想看看你会怎么做。。。看看我做错了什么。。。