![](/img/trans.png)
[英]PyQT: QListWidgetItem defined on Dialog window cannot be access from Main Window
[英]PyQt: Accesing Main Window's Data from a dialog?
所以,我正在使用Python和PyQt。 我有一個包含QTableWidget的主窗口,以及一個以模態方式打開並有一些QLineEdit小部件的對話框......好了到目前為止,但我有兩個問題:
對話框打開后,我的主窗口凍結了,我真的不喜歡那樣......
當我完成編輯QLineEdit時,我想要的是程序將搜索QTableWidget,如果表中存在QLineEdit中的文本,則會出現一個對話框,並提供相關信息。 這是一般的想法。 但是,到目前為止,我似乎只能創建一個新的QTableWidget實例,而我無法使用現有的數據...
我能做些什么呢?
你寫了:
和一個以模態方式打開的對話框
然后:
對話框打開后,我的主窗口凍結
文檔說 :
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鍵。 要搜索的文本將添加到主窗口中的日志中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.