Python 更改为在不同类中定义的PyQt4组合框中列出的选项未反映
我正在使用PyQt4进行一个小型GUI项目。我已经定义了一个类(在一个单独的文件中)来定义我必须使用的组合框的基本功能,以及另一个类来使用所有组合框的功能。 代码看起来像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)
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
变量的默认值。我不知道为什么。我的印象是,每次按下按钮,都会返回当前值。