制作多个物品的正确方法是什么?

时间:2018-01-23 14:33:46

标签: python grammar

我正在学习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 parameterdef modulepak添加更多对象( txt或json)?

EX:

对象1

  • name(mariadb)
  • 参数:status,force,update
  • modulepak:apt

Object2的

  • name(httpd)
  • 参数:status,update
  • modulepak:yum

编辑: 我正在添加调用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__())

0 个答案:

没有答案