我正在学习python,现在我遇到了问题。
我必须创建多个对象,“存储”它们供以后使用,然后将输出保存到文件中。我的GUI界面是在Qt4中制作的。
到目前为止我做的是:
class YamlPrepr:
def __init__(self,name):
self.name = name
self.module = ""
self.module_opt = ""
self.condition = ""
self.param = ""
self.param_opt = ""
def __repr__(self):
s1 = "- name: %s" % self.name
if (self.param and self.param_option) == "":
s2 = " %s: name=%s" % (self.module, self.module_opt)
else:
s2 = " %s: name=%s" % (self.module, self.module_opt) + " %s=%s" % (self.param, self.param_option)
return s1 + "\n" + s2
def modulepak(self,line,line2):
s = line.split(" ")[0]
self.module = s
self.module_opt = line2
def parameter(self,line1,line2):
self.param = line1
self.param_opt = line2
我使用这样的类:
def add_yaml(self):
self.objects.append(self.module_name.displayText())
self.mod = YamlPrepr(self.module_name.displayText())
self.mod.modulepak(self.job_box.currentText(),self.option_line.displayText())
if self.param_check.isChecked() == True:
self.mod.parameter(self.param_box.currentText(),self.choice_line.displayText())
self.display_line(self.mod.__repr__())
信息:
self.module_name.displayText()
是QLineEdit,输出是一个字符串
self.module_name.displayText()
是QLineEdit,输出是一个字符串
self.job_box.currentText()
是一个QComboBox,输出是一个字符串
self.param_box.currentText()
是一个QComboBox,输出是一个字符串
self.option_line.displayText()
是QLineEdit,输出是一个字符串
self.choice_line.displayText()
是QLineEdit,输出是字符串
每次运行此行self.mod = YamlPrepr(self.module_name.displayText())
时,我都认为该对象已被销毁并初始化一个新对象。我是对的吗?
有没有办法让多个对象“活着”,并且无论何时,当我完成将它们保存到文件中时,都会向def parameter
或def modulepak
添加更多对象( txt或json)?
EX:
对象1
Object2的
编辑:
我正在添加调用add_yaml()
的类。
class YamlGenerator(QtGui.QFrame):
def __init__(self, parent):
QtGui.QFrame.__init__(self, parent)
file_path = os.path.abspath('ui/yaml.ui')
uic.loadUi(file_path, self)
self.objects = []
self.module_combo.currentIndexChanged.connect(self.check_module_name)
self.job_box.currentIndexChanged.connect(self.show_params)
self.module_btn.pressed.connect(self.add_module_index)
self.condition_btn.pressed.connect(self.add_condition_index)
self.add_mod_btn.pressed.connect(self.add_yaml)
self.save_yaml.pressed.connect(self.save_temporary_to_file)
self.check_module_name()
def add_yaml(self):
self.objects.append(self.module_name.displayText())
self.mod = YamlPrepr(self.module_name.displayText())
self.mod.modulepak(self.job_box.currentText(),self.option_line.displayText())
if self.param_check.isChecked() == True:
self.mod.parameter(self.param_box.currentText(),self.choice_line.displayText())
self.display_line(self.mod.__repr__())