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