У меня проблемы с получением результатов из моей python формы - PullRequest
0 голосов
/ 10 апреля 2020

У меня проблемы с получением результатов из этой формы, и я не могу определить, где происходит ошибка.

from tkinter import *

def Button_to_text():
    firstname_info = firstname.get()
    lastname_info = lastname.get()
    age_info = age.get()
    print(firstname_info,lastname_info,age_info) 

screen = Tk()
screen.geometry("500x500")
screen.title("python_form")
heading = Label(text = "Demo Form",bg = "orange", fg="black",width = "500") 
heading.pack()

firstname_text = Label(text="firstname")
lastname_text = Label(text="lastname")
age_text = Label(text="age")
firstname_text.place(x=60, y= 40)
lastname_text.place(x=60,y=80)
age_text.place(x=60,y=120)

firstname = StringVar()
lastname = StringVar()
age = IntVar()

firstname_entry = Entry(textvariable = firstname)
lastname_entry = Entry(textvariable = lastname)
age_entry = Entry(textvariable = age)

firstname_entry.place(x=160, y=40)
lastname_entry.place(x=160,y=80)
age_entry.place(x=160,y=120)

register = Button(text = "register", width= "30",height ="2", command = Button_to_text())
register.place(x=50,y=290)

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

1 Ответ

1 голос
/ 10 апреля 2020

Есть две проблемы с вашим кодом:

  1. Вы должны использовать mainloop, чтобы окно отображалось непрерывно.

  2. Вы не должны использовать скобки () при передаче какой-либо функции в Button в качестве аргумента.

Примечание: И если функция имеет свои собственные параметры, вам придется использовать lambda при передаче ее в Button. Но в вашем случае вы можете просто убрать скобки ().

Вот код fixed :

from tkinter import *


def Button_to_text():
    firstname_info = firstname.get()
    lastname_info = lastname.get()
    age_info = age.get()
    print(firstname_info, lastname_info, age_info)


screen = Tk()
screen.geometry("500x500")
screen.title("python_form")
heading = Label(text="Demo Form", bg="orange", fg="black", width="500")
heading.pack()

firstname_text = Label(text="firstname")
lastname_text = Label(text="lastname")
age_text = Label(text="age")
firstname_text.place(x=60, y=40)
lastname_text.place(x=60, y=80)
age_text.place(x=60, y=120)

firstname = StringVar()
lastname = StringVar()
age = IntVar()

firstname_entry = Entry(textvariable=firstname)
lastname_entry = Entry(textvariable=lastname)
age_entry = Entry(textvariable=age)

firstname_entry.place(x=160, y=40)
lastname_entry.place(x=160, y=80)
age_entry.place(x=160, y=120)

register = Button(text="register", width="30", height="2", command=Button_to_text)
register.place(x=50, y=290)

screen.mainloop()

Примечание:

  1. В качестве хорошей практики вы всегда должны использовать маленькие буквы в названиях функций, подобных этой: def button_to_text():.

  2. И вы должны всегда import tkinter as tk вместо import ing all * from tkinter. Это всегда хорошая практика. Единственное изменение, которое вам нужно будет сделать в программе, это то, что вам нужно будет использовать tk. перед каждым элементом, принадлежащим tkinter. Как это: screen = tk.Tk()

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