Python QT(PySide)如何将外部变量传递给类

问题描述:

我对Python QT和面向对象的游戏相当新颖。这里的情况:Python QT(PySide)如何将外部变量传递给类

我有一个字典数组,我需要输出一些这些键和值到GUI中。我必须知道有多少键/值,当然这意味着我需要对它们进行计数。如何传递“dic”以便“qCount”函数(请参阅下面的代码)可以获得我的密钥数量,以便可以在GUI中填充正确数量的字段。 (它的问题清单将采取将回读的答案)

我会想“类output_GUI(QtGui.QWidget,arrayofdics)”将是我会做的,但是这似乎更像一个函数声明不是一个类的东西。我确信还有一些我需要传递给班级的实例,但我对这个主题不太了解。

十分赞赏任何意见,

谢谢

巴勃罗

class output_GUI(QtGui.QWidget): 

    def __init__(self): 
      super(output_GUI, self).__init__() 
      self.initUI() 

    def initUI(self): 
     #populate fields with obtained keys 
     #some code..... 


    def qCount(dic): 
      for n, ques in enumerate(d['Question'] for d in dic): 
        #get number of questions etc... 
def main(): 

    app = QtGui.QApplication(sys.argv) 
    ex = output_GUI() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 
+0

目前还不清楚字典是从哪里来的。取决于你需要以某种方式传递它。你基本上没有提供足够的信息来解决这个问题。 – Trilarion

嗯..我不知道如果我完全理解你的问题或没有。看来你的问题更多的是面向对象的编程。下面的代码也许就是你的需要:

class output_GUI(QtGui.QWidget): 

    def __init__(self): 
     super(output_GUI, self).__init__() 
      self.initUI() 

    def initUI(self): 
     #populate fields with obtained keys 
     #some code..... 
     self.your_variable = 1 
     self.your_dic = {'1': 'How are you?', '2': 'Where are you going?'} 

    def print_your_variable_for_fun(self): 
     print self.your_variable # output->1 
     self.your_variable = 2 
     print self.your_variable # output->2 
     self.your_variable = 1 

    def qCount(self): 
     for n, ques in enumerate(self.your_dic.values()): 
      #get number of questions etc... 
      print n, ques 

    def qAdding(self, newQuestion): 
     # adding question into your question dictionary 
     self.your_dic[str(len(self.your_dic)+1)] = str(newQuestion) 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    ex = output_GUI() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 

在你output_GUI类,每个成员函数可以通过传递“自我”(类本身)作为函数参数确定。所以它的成员函数可以操作它的(output_GUI_class)属性。