生成文本文件的多个问题
Multiple problems generating a text file
我正在制作我的第一个 Pyqt 界面,使用“设计器”和 Python 配置 it.The 函数 def clickconector
return 表单填写和 def radio_value
return 如果作业未决或已完成(“pendiente”或“terminado”)。 clickconector
和 radio_value
* 函数写得正确,但我对 def text_file
函数有问题。
问题#1:出于某种原因,生成的文件内部与标题相同,如果 radio_value
函数会出现,因为它指定在算法是另一个函数 clickconector
.
问题#2: 标题没有按照我的要求写。我得到这个:('Terminado', 'MT16'). txt
,(它在标题中写 .txt
)。
什么时候应该是:Terminado MT16
。此外,文件类型在我看来不是 .txt
,我必须 select 才能用鼠标这样打开它
def clickconector (self):
relleno = [self.bitacora.text(), self.turno.text(), self.asesor.text(), self.item.text(), self.modelo.text(), self.identificacion.text(), self.rig.text(),self.horometro.text(),self.condicion.text(),self.orden.text(), self.observacion.text()]
form_label = ["bitacora", 'turno', 'asesor', 'item', 'modelo', 'identificacion', 'rig', 'horometro', 'condicion', 'orden', 'observacion']
for a,b in zip (form_label, relleno):
return (a,b)
def radio_value (self):
if self.pendiente.isChecked():
return 'Pendiente' , self.bitacora.text()
if self.terminado.isChecked():
return'Terminado', self.bitacora.text()
def text_file (self):
Bloc_title= self.radio_value()
f = open(str(Bloc_title)+'. txt', 'w')
f.write(str(self.clickconector()))
return f
问题 2,
这里有几个小问题,您将文件扩展名设为 . txt
,这应该是 .txt
。注意额外的 space.
你的 Bloc_title
是一个列表,所以你在标题中得到了一个数组,你需要增加这个数组的部分,它的长度总是 2 所以你可以执行以下操作,
def text_file (self):
Bloc_title = self.radio_value()
f = open(Bloc_title[0] + ' ' + str(Bloc_title[1] + '.txt', 'w')
f.write(str(self.clickconector()))
return f
请注意,可能不需要 str 调用,但我不确定 self.bitacora.text()
返回的数据类型。
来自评论的回答,
如果您想要来自 relleno 的所有元素,并且只想要来自 form_label 的第一个元素,我建议修改 clickconnector()
def clickconector (self):
relleno = [self.bitacora.text(), self.turno.text(), self.asesor.text(), self.item.text(), self.modelo.text(), self.identificacion.text(), self.rig.text(),self.horometro.text(),self.condicion.text(),self.orden.text(), self.observacion.text()]
form_label = ["bitacora", 'turno', 'asesor', 'item', 'modelo', 'identificacion', 'rig', 'horometro', 'condicion', 'orden', 'observacion']
return [form_label[0]] + relleno
radio_value
的 return 类型是 tuple
。您正在将元组转换为字符串,因此它将以 tuple
的形式打印,即 "(value_a, value_b, value_c)"
而不是 value_a value_b value_c
。您可以使用 join
将元组的每个值与 space 连接起来,如下所示:
" ".join(self.radio_value())
您还在 f = open(str(Bloc_title)+'. txt', 'w')
中写了 ". txt"
而不是 ".txt"
。这就是 . txt
在文件名中的原因。考虑到所有这些,您的 text_file
函数应如下所示:
def text_file(self):
filename = f"{' '.join(self.radio_value())}.txt"
with open(filename, "w") as f:
f.write(" ".join(self.clickconnector()))
return f
请注意 with/open
而不是 open
。强烈建议使用 with/open
以提高可读性和整体 ease-of-use.
我正在制作我的第一个 Pyqt 界面,使用“设计器”和 Python 配置 it.The 函数 def clickconector
return 表单填写和 def radio_value
return 如果作业未决或已完成(“pendiente”或“terminado”)。 clickconector
和 radio_value
* 函数写得正确,但我对 def text_file
函数有问题。
问题#1:出于某种原因,生成的文件内部与标题相同,如果 radio_value
函数会出现,因为它指定在算法是另一个函数 clickconector
.
问题#2: 标题没有按照我的要求写。我得到这个:('Terminado', 'MT16'). txt
,(它在标题中写 .txt
)。
什么时候应该是:Terminado MT16
。此外,文件类型在我看来不是 .txt
,我必须 select 才能用鼠标这样打开它
def clickconector (self):
relleno = [self.bitacora.text(), self.turno.text(), self.asesor.text(), self.item.text(), self.modelo.text(), self.identificacion.text(), self.rig.text(),self.horometro.text(),self.condicion.text(),self.orden.text(), self.observacion.text()]
form_label = ["bitacora", 'turno', 'asesor', 'item', 'modelo', 'identificacion', 'rig', 'horometro', 'condicion', 'orden', 'observacion']
for a,b in zip (form_label, relleno):
return (a,b)
def radio_value (self):
if self.pendiente.isChecked():
return 'Pendiente' , self.bitacora.text()
if self.terminado.isChecked():
return'Terminado', self.bitacora.text()
def text_file (self):
Bloc_title= self.radio_value()
f = open(str(Bloc_title)+'. txt', 'w')
f.write(str(self.clickconector()))
return f
问题 2,
这里有几个小问题,您将文件扩展名设为 . txt
,这应该是 .txt
。注意额外的 space.
你的 Bloc_title
是一个列表,所以你在标题中得到了一个数组,你需要增加这个数组的部分,它的长度总是 2 所以你可以执行以下操作,
def text_file (self):
Bloc_title = self.radio_value()
f = open(Bloc_title[0] + ' ' + str(Bloc_title[1] + '.txt', 'w')
f.write(str(self.clickconector()))
return f
请注意,可能不需要 str 调用,但我不确定 self.bitacora.text()
返回的数据类型。
来自评论的回答, 如果您想要来自 relleno 的所有元素,并且只想要来自 form_label 的第一个元素,我建议修改 clickconnector()
def clickconector (self):
relleno = [self.bitacora.text(), self.turno.text(), self.asesor.text(), self.item.text(), self.modelo.text(), self.identificacion.text(), self.rig.text(),self.horometro.text(),self.condicion.text(),self.orden.text(), self.observacion.text()]
form_label = ["bitacora", 'turno', 'asesor', 'item', 'modelo', 'identificacion', 'rig', 'horometro', 'condicion', 'orden', 'observacion']
return [form_label[0]] + relleno
radio_value
的 return 类型是 tuple
。您正在将元组转换为字符串,因此它将以 tuple
的形式打印,即 "(value_a, value_b, value_c)"
而不是 value_a value_b value_c
。您可以使用 join
将元组的每个值与 space 连接起来,如下所示:
" ".join(self.radio_value())
您还在 f = open(str(Bloc_title)+'. txt', 'w')
中写了 ". txt"
而不是 ".txt"
。这就是 . txt
在文件名中的原因。考虑到所有这些,您的 text_file
函数应如下所示:
def text_file(self):
filename = f"{' '.join(self.radio_value())}.txt"
with open(filename, "w") as f:
f.write(" ".join(self.clickconnector()))
return f
请注意 with/open
而不是 open
。强烈建议使用 with/open
以提高可读性和整体 ease-of-use.