Python 更改为在不同类中定义的PyQt4组合框中列出的选项未反映

Python 更改为在不同类中定义的PyQt4组合框中列出的选项未反映,python,pyqt,pyqt4,Python,Pyqt,Pyqt4,我正在使用PyQt4进行一个小型GUI项目。我已经定义了一个类(在一个单独的文件中)来定义我必须使用的组合框的基本功能,以及另一个类来使用所有组合框的功能。 代码看起来像 class core: def __init__(self, default_value, window_name): self.combo_box = QtGui.QComboBox(window_name) self.combo_box.addItem(default_value)

我正在使用PyQt4进行一个小型GUI项目。我已经定义了一个类(在一个单独的文件中)来定义我必须使用的组合框的基本功能,以及另一个类来使用所有组合框的功能。 代码看起来像

class core:
    def __init__(self, default_value, window_name):
        self.combo_box = QtGui.QComboBox(window_name)
        self.combo_box.addItem(default_value)
        self.combo_box.addItem("some other value")
        self.combo_box.addItem("a third value")
        self.combo_box.activated[str].connect(self.set_text)
        self.text = default_value


    def set_text(self, text):
        print text
主类类似于:

from file import *
class Window(QtGui.QMainWindow):
    def __init__(self):
        super(Window, self).__init__()
        self.setGeometry(200, 100, 820, 700)
        combo_box_one = core("first", self)
        combo_box_two = core("second", self)

     #some other methods follow defining the geometry for each combo_box and other functions

def main():
    app = QtGui.QApplication(sys.argv)
    gui = Window()
    sys.exit(app.exec_())
main()

GUI正在按预期工作。所有组合框均按照定义的几何图形显示。然而,当选择不同的选项时,似乎什么都没有发生。理想情况下,我希望打印选项上的文本。事实上,当我将combo_box对象返回到main类并在那里设置它的连接时,选项中的更改就会反映出来。但是当在
核心
类中执行相同的操作时,更改不会反映为打印文本。这是与范围相关的事情吗?请帮助我了解发生了什么。

插槽只能在继承自
QObject
的类中实现,一个简单的解决方案是核心类继承自
QComboBox
,因为
QComboBox
继承自
QObject

class core(QtGui.QComboBox):
    def __init__(self, default_value, window_name):
        QtGui.QComboBox.__init__(self, window_name)
        self.addItem(default_value)
        self.addItem("some other value")
        self.addItem("a third value")
        self.activated[str].connect(self.set_text)


    def set_text(self, text):
        print(text)

@谢谢你的评论。这有助于打印文本。我想那会解决问题的。但是,如果我在
set_text
方法中将
core
类中的文本变量设置为
self.text=text
,并尝试每次按下按钮时从主类调用该变量,
self.text
变量的默认值。我不知道为什么。我的印象是,每次按下按钮,都会返回当前值。