PyQt4를 사용하여 작은 GUI 프로젝트를 진행하고 있습니다. 내가 사용해야하는 combo_boxes의 기본 기능을 정의하는 하나의 클래스 (별도의 파일 내부)와 모든 combo_boxes에 대한 기능을 사용하는 다른 클래스를 정의했습니다. 예상대로PyQt4에 나열된 옵션으로 변경되었습니다. 다른 클래스에 정의 된 combo_box가 반영되지 않았습니다.
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는 노력 : 코드는
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
같이 보입니다 주요 클래스는 뭔가 같다. 모든 combo_boxes는 정의 된 지오메트리마다 나타납니다. 그러나 다른 옵션을 선택할 때 아무 것도 발생하지 않습니다. 이상적으로는 옵션의 텍스트가 인쇄 될 것으로 기대합니다. 실제로 combo_box 객체를 주 클래스로 반환하고 거기에 연결을 설정하면 옵션의 변경 사항이 반영됩니다. 그러나 같은 일이 core
클래스에서 수행되면 변경 내용이 인쇄 된 텍스트로 반영되지 않습니다. 범위 관련 것입니까? 무슨 일이 일어나는지 이해하게 도와주세요.
@eyllansec 의견을 보내 주셔서 감사합니다. 이것은 텍스트 인쇄에 도움이됩니다. 나는 그것이 문제를 해결할 것이라고 생각했다. 그러나'set_text' 메쏘드에서'self.text = text'라는 텍스트 변수를'core' 클래스에 설정하고 메쏘드를 호출하고 메인 클래스에서 버튼을 누를 때마다 이것을 호출하려고하면' self.text' 변수. 왜 그런지 모르겠습니다. 버튼을 누를 때마다 현재 값이 반환된다는 인상을 받고있었습니다. – 0Nicholas