2016-01-18 57 views
1

我有下面的代码使用PyQt的,这显示两个QComboBox的,我想用我的应用程序的选择值:如何使用QComboBox选择在功能

class TACRG(QtGui.QMainWindow, design.Ui_MainWindow): 
    def __init__(self, parent=None): 
     super(TACRG, self).__init__(parent) 
     self.setupUi(self) 

     self.CList.addItems(["A", "B", "C", "D"]) 
     self.connect(self.CList, QtCore.SIGNAL('activated(QString)'), self.c_chosen) 

     self.RList.addItems(["Q1", "Q2", "Q3", "Annual"]) 
     self.connect(self.RList, QtCore.SIGNAL('activated(QString)'), self.r_chosen) 

    def r_chosen(self, text): 
     report_start, report_end = report_period(text) 

    def c_chosen(self, text): 
     accs = get_ucs(text) 

def report_period(r_period): 
    year=date.today().year 
    if r_period == 'Q1': 
     return (str(year)+'0101',str(year)+'0331') 
    elif r_period == 'Q2': 
     return (str(year)+'0401',str(year)+'0630') 
    elif r_period == 'Q3': 
     return (str(year)+'0701',str(year)+'0930') 
    elif r_period == 'Annual': 
     return (str(year-1)+'0101',str(year-1)+'1231') 

def get_ucs(c_name): 
    """DO something"" 
    return """some string""" 

现在我wan't使用返回的值从report_period和get_ucs函数(report_start,report_end,accs)中读取另一个函数,必须在执行这两个函数后调用它。 我该如何做到这一点?

回答

0

使用self类的数据成员存储值,打电话给你的两个r_chosenc_chosenother_method并在使用前在other_method检查有效值。

class TACRG(QtGui.QMainWindow, design.Ui_MainWindow): 
    def __init__(self, parent=None): 
     # Your init code 
     self.report_start, self.report_end, self.accs = [None] * 3 

    def r_chosen(self, text): 
     self.report_start, self.report_end = report_period(text) 
     self.other_method() 

    def c_chosen(self, text): 
     self.accs = get_ucs(text) 
     self.other_method() 

    def other_method(self): 
     #validate if your fields have valid values 
     if self.report_start and self.report_end and self.accs: 
      print self.report_start, self.report_end, self.accs 

编辑(其它方法外类):

class TACRG(QtGui.QMainWindow, design.Ui_MainWindow): 
    def __init__(self, parent=None): 
     # Your init code 
     self.report_start, self.report_end, self.accs = [None] * 3 

    def r_chosen(self, text): 
     self.report_start, self.report_end = report_period(text) 
     other_method(self.report_start, self.report_end, self.accs) 

    def c_chosen(self, text): 
     self.accs = get_ucs(text) 
     other_method(self.report_start, self.report_end, self.accs) 

def other_method(report_start, report_end, accs): 
    #validate if your fields have valid values 
    if report_start and report_end and accs: 
     print report_start, report_end, accs 
+0

非常感谢!这似乎工作,但产生一个错误,如果我只是改变一个droplist,只是改变了前一秒: AttributeError的:'TACRG'对象没有属性'report_start' 这可以忽略吗? – Sergio

+0

还有other_method是班级的一部分。如果我想让这个功能在课外?关于'AttributeError'的 – Sergio

+0

:你在__init__中放置了'self.report_start,self.report_end,self.accs = [None] * 3'吗?我在上面的代码中有这个。 –