#python #tkinter #output
#python #ткинтеръ #вывод #tkinter
Вопрос:
Я пытаюсь создать приложение для викторины, и я написал следующий код, который является неполным Я пытаюсь получить выходное сообщение из приложения, которое дает ответ, написанный учеником, это кажется забавным, но я сделаю еще кое-что над этим. результат, который я хочу, должен быть примерно таким: клиент вводит 12, приложение показывает другое поле, в котором говорится, что ваш ответ равен 12, но в этом примере это делается для одного ответа, и это должно быть выполнимо и для большего количества вопросов.
import tkinter as tk
from tkinter import *
import math
import random
window=tk.Tk()
def question():
window=tk.Tk()
q1=tk.Label(window, text="enter your question").grid(row=1, column=1)
e1=tk.Entry(window, text="the number of your answer ").grid(row=2, column=1)
b1=tk.Button(window, text="exit", command=window.destroy).grid(row=3, column=1)
window.mainloop()
после вашей помощи я изменил свой код на этот, но у меня все еще есть проблемы с получением окна сообщения или чего-то в этом роде. обновленный код выглядит следующим образом. теперь проблема в том, что как только я запускаю код, открывается пустое окно сообщения и не ждет, пока я введу какое-то значение в запись
def question():
window=tk.Tk()
q1=tk.Label(window, text="enter your question")
e1=tk.Entry(window, text="the number of your answer ")
b1=tk.Button(window, text="exit", command=window.destroy)
q1.grid(row=1, column=1)
e1.grid(row=2, column=1)
b1.grid(row=3, column=1)
e1_num=e1.get()
while e1_num==None:
pass
else:
messagebox.showinfo(e1_num)
mainloop()
Комментарии:
1. Окно не будет запущено, так как вы нигде не вызываете
question
, может быть, выделите, какой вывод вы точно хотите?2. ну, я хочу, чтобы он печатал все, что вводит клиент, это простая модель того, что я хочу, у основного было бы много вопросов, я начинаю с tkinter и действительно не знаю, что здесь не так
3. Вы пробовали
messagebox
package4. Хорошо, итак, начните с удаления функции, и это покажет графический интерфейс, который рекомендуется удалить
Entry(...).grid(..)
и разделить его на две строки, такие какe1 = Entry(...)
иe1.grid(...)
. И дайте мне знать. Вы можете использоватьmessagebox
, чтобы показывать пользователю некоторые сообщения, такие как правильный ответ или неправильный ответ.5. ну, я попробовал messagebox, но он выдавал ошибки, возможно, я использовал его неправильно, есть ли какой-нибудь учебник по нему?
Ответ №1:
Вы могли бы использовать e1.insert('0', 'subject')
для вставки чего-либо в запись. Вы также можете заменить ‘subject’ переменной. Чтобы удалить содержимое записи, вы можете использовать e1.delete(0,END)
Вы можете получить информацию из записи (e1) и сохранить в ней переменную, например, так: e1_num = e1.get()
Я надеюсь, что это поможет вам: D
Решение вашей проблемы:
from tkinter import *
import tkinter as tk
def question():
window=tk.Tk()
window.geometry('200x125')
window.title('Test')
q1=tk.Label(window, text="Enter your question")
e1=tk.Entry(window)
e2=tk.Entry(window)
b1=tk.Button(window, text="Exit", command=window.destroy)
def Enter():
e1_num = e1.get()
e2.insert('0', e1_num)
q1.pack()
e1.pack()
b2=Button(window, text='Enter', command=Enter)
b2.pack()
e2.pack()
b1.pack()
window.mainloop()
question()
Как это будет выглядеть:
Комментарии:
1. Я полагаю, что
end-1c
используется сText
, почему бы не использоватьe1.delete(0,END)
?2. Я не уверен, можете взглянуть? Я сейчас не в системе
3. Да, конечно 🙂 я посмотрю
4. Итак, (0, END) работает для записей, а (‘1.0′,’end-1c’) — для текстовых полей. Я обязательно исправлю свой ответ.
5. итак, я изменил свой код на это, но все еще не могу использовать окно сообщения.
def question(): window=tk.Tk() q1=tk.Label(window, text="enter your question") e1=tk.Entry(window, text="the number of your answer ") b1=tk.Button(window, text="exit", command=window.destroy) q1.grid(row=1, column=1) e1.grid(row=2, column=1) b1.grid(row=3, column=1) e1_num=e1.get()