как получить выходное сообщение от tkinter?

#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 package

4. Хорошо, итак, начните с удаления функции, и это покажет графический интерфейс, который рекомендуется удалить 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()