tkinter не может сохранить данные из записи в текстовый файл - PullRequest
0 голосов
/ 12 апреля 2020

Код работает довольно хорошо, за исключением .get(), который не извлекает строку из поля Entry в мой новый текстовый файл.

import tkinter

def save_register():

    full_name_info = full_name.get()
    email_info = email.get()
    password_info = password.get()

    with open("RegistrationInfo.txt", "w") as f:
        f.write("username: " + full_name_info + "\n")
        f.write("email: " + email_info + "\n")
        f.write("password: " + password_info + "\n")

        full_name_entry.delete(0, 100)
        email_entry.delete(0, 100)
        password_entry.delete(0, 100)

    tkinter.Label(screen1, text="Registration completed", fg="green").pack()

---- Новое окно - -

def new_user():

    global screen1
    global full_name
    global email
    global password
    global full_name_entry
    global email_entry
    global password_entry

    screen1 = tkinter.Tk()
    screen1.geometry("300x300")
    screen1.title("register page")

    full_name = tkinter.StringVar()
    email = tkinter.StringVar()
    password = tkinter.StringVar()

    tkinter.Label(screen1, text="Welcome please enter info below").pack()
    tkinter.Label(screen1, text="").pack()
    tkinter.Label(screen1, text="Full name:").pack()
    full_name_entry = tkinter.Entry(screen1, textvariable=full_name, width=25)
    full_name_entry.pack()
    tkinter.Label(screen1, text="Email:").pack()
    email_entry = tkinter.Entry(screen1, textvariable=email, width=25)
    email_entry.pack()
    tkinter.Label(screen1, text="Password:").pack()
    password_entry = tkinter.Entry(screen1, textvariable=password, width=25)
    password_entry.pack()
    tkinter.Label(screen1, text="").pack()
    tkinter.Button(screen1, text="Register", command=save_register).pack()

Так что я не совсем уверен, что здесь не так, я буду более чем счастлив, если кто-нибудь это поймет.

1 Ответ

0 голосов
/ 12 апреля 2020

Я не совсем уверен, кто здесь виновник, но я подозреваю, что это как-то связано с использованием StringVar в tkinter.

Из всего, что я прочитал, StringVar - это абсолютно правильный способ получения данных, которые были введены в ваши поля ввода.

Однако недавно у меня были некоторые проблемы с внедрением StringVar в мою собственную программу GUI. Вместо этого я просто использовал метод .get следующим образом:

full_name=''

full_name_entry = tkinter.Entry(screen1, width=25)
full_name_entry.pack()

full_name = full_name_entry.get()

Затем я смог математически манипулировать данными во всей остальной части моей программы. StringVar и IntVar также созданы для этой цели, поэтому придерживаться этого метода понятно.

Это руководство по StringVar было одним из наиболее читаемых руководств, которые я прочитал, столкнувшись с такой же проблемой. В нем рассматриваются различные типы Var в tkinter и способы их реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...