(Tkinter/Python)如何检查文本文件中的内容,并根据结果产生不同的结果?

(Tkinter/Python)如何检查文本文件中的内容,并根据结果产生不同的结果?,python,tkinter,Python,Tkinter,我目前在检查我的文本文件中是否写下了内容时遇到了一些问题 在我的代码中,我检查storefile.txt文件中是否有“1”。如果文本文件中没有“1”,表示用户第一次打开了代码,Tkinter会询问用户的姓名并输入“1”(表示用户以前打开过代码)。如果没有,Tkinter会说“欢迎回来”,以及用户输入的姓名 然而,即使在我第一次打开代码之后,代码的行为就像“1”不在storefile中一样,尽管它在storefile中。代码要求输入我的名字并再次打印“1”,因此我的storefile中有超过1个“

我目前在检查我的文本文件中是否写下了内容时遇到了一些问题

在我的代码中,我检查storefile.txt文件中是否有“1”。如果文本文件中没有“1”,表示用户第一次打开了代码,Tkinter会询问用户的姓名并输入“1”(表示用户以前打开过代码)。如果没有,Tkinter会说“欢迎回来”,以及用户输入的姓名

然而,即使在我第一次打开代码之后,代码的行为就像“1”不在storefile中一样,尽管它在storefile中。代码要求输入我的名字并再次打印“1”,因此我的storefile中有超过1个“1”,并且永远不会到达“欢迎回来”[name]阶段

import tkinter as tk
from time import time
from tkinter import *
root = Tk()


#FUNCTION FOR LABELS (not necessary but it condenses the code)
def label(a):
    Label(root,text=a,font=("System",15,"bold"),fg="steelblue").pack()



#THIS IS FOR EXTRACTING SPECIFIC DATA FROM THE TEXTFILE

lines = [] #Declare an empty list named "lines"
def specify(x):
    with open ('storefile.txt', 'rt+') as in_file:  #Open file lorem.txt for reading of text data.
        for line in in_file:                       #For each line of text store in a string variable named "line", and
            lines.append(line)                     #add that line to our list of lines.
    label(lines[x])                                #print the list object.

    #[x] allows us to print whatever line we want.

#############################

#THIS IS FOR THE 'ENTER NAME' BUTTON TO STORE NAMES
def store():
    user_entry = distance_text_box.get()
    f=open("storefile.txt", "a")
    f.write (str(user_entry))
    f.close()

#TITLE
label("[INSERT TITLE]")




#CHECKS IF THIS IS THEIR FIRST TIME ON THE APP. IF IT IS, PRINT DESCRIPTION AND ASKS FOR USERNAME
searchfile = open("storefile.txt", "r")
with open ('storefile.txt', 'rt+') as in_file:  #Open file lorem.txt for reading of text data.
    for line in searchfile:                       #For each line of text store in a string variable named "line", and
        if "1" not in line:#IT STORES '1' IN THE TEXTFILE WHEN THE USER FIRST OPENS THE CODE, SO IF '1' ISN'T THERE, THE USER HAS NOT OPENED THE CODE YET
            print("yes")

            Label(root,text="ENTER NAME",font=("System",15,"bold"),fg="steelblue").pack(side=LEFT)#enter name label

            distance_text_box = Entry(root, bd=1)
            distance_text_box.pack()

            searchfile = open("storefile.txt", "a")
            searchfile.write("1\n")
            searchfile.close()

            Button(root, text ="Done!", command=lambda:store()).pack(side=RIGHT)


    elif "1" in line:
        print("no")
        Label(root,text="Welcome back,").pack()
searchfile.close()






#PUT NAME IN TEXTFILE



root.mainloop()

首先,您试图打开一个已经打开的文件。 其次,如果要逐行访问文件,请尝试以下操作:

with open('file.txt','r') as f:
  lines  = f.readlines() #lines is now a list of lines in the file.

如果要向文件中添加新文本,只需创建一个要添加和追加的行列表,检查循环完成后,将其追加到行列表并回写到文件。

您正在尝试向已打开的文件中写入内容。