读取.txt并将内容输入文本框

时间:2018-08-13 05:43:18

标签: python tkinter text-files

我正在尝试读取一个存储用户名和密码的txt文件,像这样分开:

Username|Password

让python将两者输入到单独的文本框中,本质上是用于登录的基本“记住我”系统。

如果运行savehover()

savepassinput()会将小部件的前景色更改为其他颜色。

如果.txt为空,则不应运行savepassinput(),并通过

这里的代码不会给我任何错误,但是它不会在文本框中输入任何内容,也不会更改按钮的颜色。

.txt文件中的所有内容都经过格式化以适合代码,那么看来是什么问题呢?

def savepassinput():
    savehover()
    passtxt = open("rememberme.txt", 'r')
    passtxt.read()
    usr, pas = line.strip().split("|")
    textentry.insert(usr)
    textentry2.insert(pas)

def savepasscheck():
    passtxt = open("rememberme.txt", 'r')
    passtxt.read()
    if passtxt.read() == "":
        pass
    else:
        savepassinput()
    passtxt.close()

1 个答案:

答案 0 :(得分:1)

假设您代码中的textbox.insert()是正确的:

首先,您应尝试使用with语句,以确保正确打开和关闭文件。

第二,您read()两次。它的作用是在第一次读取时将光标移动到文件末尾,然后再次读取时,它什么也不会读取。这就是为什么不调用其他函数的原因。

然后,进行如下比较:if passtxt.read() == "":通常不是最好的主意,因为您的文件可能包含空格,制表符或换行符之类的空格。您可以做的是strip()您刚刚读过的字符串。

最后,您可以使用if摆脱无用的pass情况。只需检查它是否不为空->如果不是,则进行保存,如果不是,则保存。

这是我的写法:

def savepasscheck():
    with open("rememberme.txt", 'r') as passtxt:
        if passtxt.read().strip() is not "":
            savepassinput()

因此,此功能正在读取和检查。您应该真正遵循DRY规则,并将已阅读的文本传递给其他功能:

def savepasscheck():
    with open("rememberme.txt", 'r') as passtxt:
        content = passtxt.read().strip()
        if content is not "":
            savepassinput(content)

def savepassinput(content):
    savehover()
    usr, pas = content.split("|")
    textentry.insert(usr)
    textentry2.insert(pas)