PyQt5:未调用单独文件中的插槽

我现在有一个基本的 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 似乎从未被结果页面捕获。我和打印报表证实它正在被发出,但仅此而已。

我在这里缺少什么?


PIPIONE
浏览 153回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python