Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在函数中使用QComboBox选择_Python_Pyqt - Fatal编程技术网

Python 如何在函数中使用QComboBox选择

Python 如何在函数中使用QComboBox选择,python,pyqt,Python,Pyqt,我有以下使用pyqt的代码,其中显示了两个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",

我有以下使用pyqt的代码,其中显示了两个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"""
现在我不想在另一个函数中使用从report_period返回的值和get_ucs函数(report_start、report_end、accs),这两个函数必须在这两个函数执行后调用。
如何实现这一点?

使用
self
在类数据成员中存储值,在
r\u selected
c\u selected
中调用您的
other\u方法
,并在使用前检查
other\u方法中的有效值

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
编辑(类外的其他方法):


使用
self
在类数据成员中存储值,在
r\u selected
c\u selected
中调用您的
other\u方法
,并在使用前检查
other\u方法中的有效值

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
编辑(类外的其他方法):


谢谢!,这似乎是可行的,但如果在更改第二个droplist之前只更改一个droplist,则会引发一个错误:AttributeError:“TACRG”对象没有属性“report\u start”可以忽略吗?而且另一个方法仍然是类的一部分。如果我想让这个函数在类外怎么办?关于
AttributeError
:你把
self.report\u start,self.report\u end,self.accs=[None]*3
放在init中了吗?我在上面的代码中有这个。非常感谢!,这似乎是可行的,但如果在更改第二个droplist之前只更改一个droplist,则会引发一个错误:AttributeError:“TACRG”对象没有属性“report\u start”可以忽略吗?而且另一个方法仍然是类的一部分。如果我想让这个函数在类外怎么办?关于
AttributeError
:你把
self.report\u start,self.report\u end,self.accs=[None]*3
放在init中了吗?我在上面的代码中有这个。