2016-01-18 84 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'嗎?我在上面的代碼中有這個。 –