TKINTER: прочитать файл, если записи соответствуют сохраненным данным? - PullRequest
0 голосов
/ 02 января 2019

Я новичок в Python, я пытаюсь создать функцию кнопки, которая может как записывать новые данные в файл, так и при совпадении записанных данных загружать данные из профиля.

Проблема, с которой я сталкиваюсь, здесь:

строка 12: если firstname_info в list_of_files:

код не запускает оператор if цикла - возможно, я сделал ошибку с переменной, соответствующей файлу?

Код:

from tkinter import *
import tkinter.messagebox
import os

def register_user():
    firstname_info = firstname.get()
    lastname_info = lastname.get()
    iden_info = iden.get()
    email_info = email.get()

    list_of_files = os.listdir()

    if firstname_info in list_of_files:
        file1 = open(firstname_info, "r")
        verify = file1.read().splitlines()
        if lastname_info in verify:
            if iden_info in verify:
                if email_info in verify:
                    print("it worked")
        else:
            print("user not found")

def main_screen():
    global screen
    screen = Tk()

    global firstname
    global lastname
    global iden
    global email

    firstname = StringVar()
    lastname = StringVar()
    iden = StringVar()
    email = StringVar()

    header = Label(text = "Header")
    firstname_label = Label(text = "Firstname")
    lastname_label = Label(text = "lastname")
    iden_label = Label(text = "Student ID")
    email_label = Label(text = "Student Email")

    header.grid(row=0, column=1)
    firstname_label.grid(row=1, column=0)
    lastname_label.grid(row=2, column=0)
    iden_label.grid(row=3, column=0)
    email_label.grid(row=4, column=0)

    b1 = Button(text = "Submit", command = register_user)
    b1.grid(row = 5, column = 1)

    global firstname_entry
    global lastname_entry
    global iden_entry
    global email_entry

    firstname_entry = Entry(textvariable = firstname)
    firstname_entry.grid(row = 1, column = 1)
    lastname_entry = Entry(textvariable = lastname)
    lastname_entry.grid(row = 2, column = 1)
    iden_entry = Entry(textvariable = iden)
    iden_entry.grid(row = 3, column = 1)
    email_entry = Entry(textvariable = email)
    email_entry.grid(row = 4, column = 1)

    screen.mainloop()

main_screen()

спасибо

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Вы не записываете данные из графического интерфейса в какие-либо файлы.Перед чтением из файла firstname_info вы должны сначала создать его.

вы можете изменить функцию register_user () , как показано ниже code

def register_user():
    firstname_info = firstname.get()
    lastname_info = lastname.get()
    iden_info = iden.get()
    email_info = email.get()

    list_of_files = os.listdir()

    if firstname_info in list_of_files:
        file1 = open(firstname_info, "r")
        verify = file1.read().splitlines()
        if lastname_info in verify:
            if iden_info in verify:
                if email_info in verify:
                    print("it worked")
        else:
            print("user not found")
    else:
        file1 = open(firstname_info, "w")
        file1.write(lastname_info+"\n"+iden_info+"\n"+email_info)
        file1.close()
0 голосов
/ 02 января 2019

Если вы запустите свой скрипт в том же каталоге, что и stored data, он должен работать, так как os.listdir() будет искать файл в каталоге ., который является текущим каталогом. Однако лучше указать каталог stored data в os.listdir(), например os.listdir('/path/to/stored/data'). Также мне кажется следующий блок кода:

if firstname_info in list_of_files:
    file1 = open(firstname_info, "r")
    verify = file1.read().splitlines()
    if lastname_info in verify:
        if iden_info in verify:
            if email_info in verify:
                print("it worked")
    else:
        print("user not found")

следует изменить на:

if firstname_info in list_of_files:
    print('user profile found')
    with open(firstname_info, "r") as file1:
        verify = file1.read().splitlines()
        if lastname_info in verify and iden_info in verify and email_info in verify:
            print("it worked")
        else:
            print("user info incorrect")
else:
    print("user profile not found")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...