我现在有一个基本的 GUI,每个页面都在自己的文件中。我可以毫无问题地在每个页面之间导航,但我很难将搜索查询简单地传递给另一个小部件。这是我在主文件中设置连接的地方:
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys
import search
import watching
import helpinfo
import results
class MainWindow(QMainWindow):
def __init__(self, parent=None):
'''
Constructor
'''
QMainWindow.__init__(self, parent)
self.centralWidget = QStackedWidget()
self.setCentralWidget(self.centralWidget)
self.startScreen = Start(self)
self.searchScreen = search.Search(self)
self.watchingScreen = watching.Watching(self)
self.helpInfoScreen = helpinfo.HelpInfo(self)
self.resultsScreen = results.Results(self)
self.centralWidget.addWidget(self.startScreen)
self.centralWidget.addWidget(self.searchScreen)
self.centralWidget.addWidget(self.watchingScreen)
self.centralWidget.addWidget(self.helpInfoScreen)
self.centralWidget.addWidget(self.resultsScreen)
self.centralWidget.setCurrentWidget(self.startScreen)
self.startScreen.searchClicked.connect(lambda: self.centralWidget.setCurrentWidget(self.searchScreen))
self.startScreen.watchingClicked.connect(lambda: self.centralWidget.setCurrentWidget(self.watchingScreen))
self.startScreen.helpInfoClicked.connect(lambda: self.centralWidget.setCurrentWidget(self.helpInfoScreen))
self.searchScreen.searchSubmitted.connect(lambda: self.centralWidget.setCurrentWidget(self.resultsScreen))
self.searchScreen.passQuery.connect(lambda: self.resultsScreen.grabSearch) #This is the problem line
按照我的理解,我现在所拥有的应该是有效的。当用户在搜索页面上提交一些文本时,它会调用 submitSearch() 函数。该函数发出两个信号:第一个,searchSubmitted,将屏幕更改为结果屏幕(这按预期工作)。第二个,passQuery,应该将文本框的内容传递给结果文件中连接的函数grabSearch()。但是,尽管已连接,但 passQuery 似乎从未被结果页面捕获。我和打印报表证实它正在被发出,但仅此而已。
我在这里缺少什么?
相关分类