Python 由于我的输入相互覆盖,如何写入新行?

Python 由于我的输入相互覆盖,如何写入新行?,python,if-statement,Python,If Statement,我试图从一个GUI中保存答案,该GUI有一个单选按钮,其值范围为a、B和C,但当我尝试编写代码时,它会完全重写第一个字母,而不会转到下一行 self.pushButton.clicked.connect(lambda: self.btnA_clk(self.radioButton_16.isChecked())) self.pushButton.clicked.connect(lambda: self.btnB_clk(self.radioButton_17.

我试图从一个GUI中保存答案,该GUI有一个单选按钮,其值范围为a、B和C,但当我尝试编写代码时,它会完全重写第一个字母,而不会转到下一行

    self.pushButton.clicked.connect(lambda: 
    self.btnA_clk(self.radioButton_16.isChecked()))
    self.pushButton.clicked.connect(lambda: 
    self.btnB_clk(self.radioButton_17.isChecked()))
    self.pushButton.clicked.connect(lambda: 
    self.btnC_clk(self.radioButton_18.isChecked()))



def btnA_clk(self, clkA):
    if clkA:
        textfile = open("studentexam.txt", "w")
        print("A")
        textfile.write("A")
        textfile.close()

def btnB_clk(self, clkB):
    if clkB:
        textfile = open("studentexam.txt", "w")
        print("B")
        textfile.write("B")
        textfile.close()

def btnC_clk(self, clkC):
    if clkC:
        textfile = open("studentexam.txt", "w")
        print("C")
        textfile.write("C")
        textfile.close()
我在控制台中的输出是一个b c d e,但在文本文件中,它在第一行中只有一个字母,这是最后一个字母

# param = 'clkA'
def button_click(self, param):
    with open('studentexam.txt', 'a') as f:
        print(param[-1])
        f.write(param[-1])

当每个函数都有相同的功能时,尽量避免代码的重复。。。当然,如果可能的话


当每个函数都有相同的功能时,尽量避免代码的重复。。。如果可能,当然。

每次代码执行此操作时:

textfile = open("studentexam.txt", "w")
您正在重新打开文件并覆盖以前的内容。与应用程序中的File | Save相同,只是代码没有询问“确定吗?”。使用模式
“a”
而不是
“w”

从以下文件中:

mode最常用的值是'r'用于读取,'w'用于写入(如果文件已经存在,则截断该文件),以及'a'用于追加


每次代码执行此操作时:

textfile = open("studentexam.txt", "w")
您正在重新打开文件并覆盖以前的内容。与应用程序中的File | Save相同,只是代码没有询问“确定吗?”。使用模式
“a”
而不是
“w”

从以下文件中:

mode最常用的值是'r'用于读取,'w'用于写入(如果文件已经存在,则截断该文件),以及'a'用于追加


打开(“studentexam.txt”,“a”)
。使用模式
“a”
进行追加。在此处阅读更多信息:模式
“w”
截断并覆盖您的文件。我需要将字母像\n b\n c\n d\n e\n
文本文件一样保存。写入(“a\n”)
?是否需要为每个函数调用分别打开和关闭文件?也许更好的解决方案是在开始时打开文件一次,在结束时关闭?我会尝试“a”模式,先生,但模式a会不断添加字母,我需要在重新运行后将文本文件设置为空白。有可能吗,先生?
打开(“studentexam.txt”,“a”)
。使用模式
“a”
进行追加。在此处阅读更多信息:模式
“w”
截断并覆盖您的文件。我需要将字母像\n b\n c\n d\n e\n
文本文件一样保存。写入(“a\n”)
?是否需要为每个函数调用分别打开和关闭文件?也许更好的解决方案是在开始时打开文件一次,在结束时关闭?我会尝试“a”模式,先生,但模式a会不断添加字母,我需要在重新运行后将文本文件设置为空白。有可能吗,先生?我可以用什么方法或功能使我的文件在打开后再次变为空白?因为它不停地写信。我需要让它在跑步的每一个终点都能节省下来。但是如果用户再次运行它,它将变为空白,因此无法继续使用一种方式:提供另一个附加到名为“清除文件”的按钮的功能,该按钮以模式
“w”打开文件
并立即再次关闭,无需写入任何内容。我是否可以在提交按钮中添加我将要使用的功能,或者我将为清除文件创建一个不同的按钮,先生?由您决定。我真的不知道你的程序应该做什么。这就是为什么我在评论中说这是一种方法。你的问题是关于如何清除文件:你现在知道了。但只有你能说你希望什么时候发生。问一个新问题,包括你的程序和到目前为止的修复,说出正在发生的事情和你希望发生的事情。注释对此并不方便。我可以使用什么方法或功能使我的文件在打开后再次变为空白?因为它不停地写信。我需要让它在跑步的每一个终点都能节省下来。但是如果用户再次运行它,它将变为空白,因此无法继续使用一种方式:提供另一个附加到名为“清除文件”的按钮的功能,该按钮以模式
“w”打开文件
并立即再次关闭,无需写入任何内容。我是否可以在提交按钮中添加我将要使用的功能,或者我将为清除文件创建一个不同的按钮,先生?由您决定。我真的不知道你的程序应该做什么。这就是为什么我在评论中说这是一种方法。你的问题是关于如何清除文件:你现在知道了。但只有你能说你希望什么时候发生。问一个新问题,包括你的程序和到目前为止的修复,说出正在发生的事情和你希望发生的事情。评论对此并不方便。