【问题标题】:How to display an output using entry widget in Python?如何使用 Python 中的条目小部件显示输出?
【发布时间】:2016-01-14 15:28:26
【问题描述】:

如何通过 Entry Widget 显示输出。假设我要添加 2 个数字,并希望使用输入小部件在文本框中显示它们的总和。

from tkinter import *
from tkinter.messagebox import *

def show_answer():
    Ans = int(num1.get()) + int(num2.get())
    ans.set(Ans)
    Entry(main,  text = "%s" %(ans) ).grid(row=2, column=1)


main = Tk()
Label(main, text = "Enter Num 1:").grid(row=0)
Label(main, text = "Enter Num 2:").grid(row=1)
Label(main, text = "The Sum is:").grid(row=2)


num1 = Entry(main)
num2 = Entry(main)
blank = Entry(main)


num1.grid(row=0, column=1)
num2.grid(row=1, column=1)
blank.grid(row=2, column=1)


Button(main, text='Quit', command=main.quit).grid(row=4, column=0, sticky=W, pady=4)
Button(main, text='Show', command=show_answer).grid(row=4, column=1, sticky=W, pady=4)

mainloop()

示例输出:

【问题讨论】:

  • 请包含一些代码以显示您尝试过的内容。
  • 这可以通过简单的在线搜索来解决。这是我的搜索引擎结果中的第一个链接:effbot.org/tkinterbook/entry.htm。请务必仔细阅读并回复您的任何问题
  • 我已经添加了代码
  • 能否请您更新一下您的代码问题似乎是什么?

标签: python tkinter widget tkinter-entry


【解决方案1】:
from tkinter import *
from math import *
main = Tk()
main.title('CALCULATOR')
def add():
    blank.delete(0, END)
    Ans = int(num1.get()) + int(num2.get())
    blank.insert(0, Ans)
def sub():
    blank.delete(0, END)
    Ans = int(num1.get()) - int(num2.get())
    blank.insert(0, Ans)
def mult():
    blank.delete(0, END)
    Ans = int(num1.get()) * int(num2.get())
    blank.insert(0, Ans)
def div():
    blank.delete(0, END)
    Ans = int(num1.get()) / int(num2.get())
    blank.insert(0, Ans)
def clear():
    blank.delete(0, END)
    num2.delete(0, END)
    num1.delete(0, END)
def sq():
    blank.delete(0, END)
    Ans = int(num1.get()) * int(num1.get())
    blank.insert(0, Ans)

def sqrtt():
    blank.delete(0, END)
    h = int(num1.get())
    a = sqrt(h)
    Ans = (int(a))
    blank.insert(0, Ans)

main.geometry('500x100')
Label(main, text = "Enter Num 1:").grid(row=0)
Label(main, text = "Enter Num 2:").grid(row=1)
Label(main, text = "The Answer is:").grid(row=2)


num1 = Entry(main)
num2 = Entry(main)
blank = Entry(main)


num1.grid(row=0, column=1)
num2.grid(row=1, column=1)
blank.grid(row=2, column=1)


Button(main, text='Quit', command=main.destroy).grid(row=4, column=0, sticky=W)
Button(main, text='Add', command=add).grid(row=0, column=3, sticky=W,)
Button(main, text='Subtract', command=sub).grid(row=0, column=4, sticky=W)
Button(main, text='Multiply', command=mult).grid(row=0, column=5, sticky=W)
Button(main, text='Divide', command=div).grid(row=0, column=6, sticky=W)
Button(main, text='^2', command=sq).grid(row=0, column=7, sticky=W)
Button(main, text='Sqrt', command=sqrtt).grid(row=0, column=8, sticky=W)
Button(main, text='Clear', command=clear).grid(row=0, column=9, sticky=W)

mainloop()

我正在研究类似的东西,我对其进行了修改,但有点过火了,它不适用于小数,但它适用于所有其他函数。

【讨论】:

    【解决方案2】:

    如果您想在窗口中显示答案,您可以先创建一个标签。然后,您可以将该标签中显示的文本更改为您希望它显示的内容。

    创建标签:

    lsum = Tk.Label(master, text = 'The sum is:')
    lsum.grid(row=5, column=1, sticky=W, pady=4)
    

    然后更新它:

    lsum["text"] = "The sum is: " + str(ans)
    

    在您的代码中实现它:

    from tkinter import *
    
    from tkinter.messagebox import *
    
    def show_answer():
        Ans = int(num1.get()) + int(num2.get())
        ans.set(Ans)
    
        lsum["text"] = "The sum is: " + str(ans)
        Entry(main,  text = "%s" %(ans) ).grid(row=2, column=1)
    
    
    main = Tk() Label(main, text = "Enter Num 1:").grid(row=0) Label(main, text = "Enter Num 2:").grid(row=1) Label(main, text = "The Sum is:").grid(row=2)
    
    
    num1 = Entry(main) num2 = Entry(main) blank = Entry(main)
    
    
    num1.grid(row=0, column=1) num2.grid(row=1, column=1) blank.grid(row=2, column=1)
    
    
    Button(main, text='Quit', command=main.quit).grid(row=4, column=0, sticky=W, pady=4) Button(main, text='Show', command=show_answer).grid(row=4, column=1, sticky=W, pady=4)
    
    lsum = Tk.Label(master, text = 'The sum is:')
    lsum.grid(row=5, column=1, sticky=W, pady=4)
    
    mainloop()
    

    【讨论】:

    • 您的回答有些奇怪。注意main = Tk() Label(...)... 是如何一起运行的。此外,这有内存泄漏。每次单击“显示”按钮时,您都会创建另一个条目小部件。如果您单击它 10 次,您将拥有 10 个新条目小部件。最好创建一次小部件,然后更改其值,然后每次都创建一个新的。
    【解决方案3】:

    我已经有了答案

        from tkinter import *
    from tkinter.messagebox import *
    
    def show_answer():
        Ans = int(num1.get()) + int(num2.get())
        blank.insert(0, Ans)
    
    
    main = Tk()
    Label(main, text = "Enter Num 1:").grid(row=0)
    Label(main, text = "Enter Num 2:").grid(row=1)
    Label(main, text = "The Sum is:").grid(row=2)
    
    
    num1 = Entry(main)
    num2 = Entry(main)
    blank = Entry(main)
    
    
    num1.grid(row=0, column=1)
    num2.grid(row=1, column=1)
    blank.grid(row=2, column=1)
    
    
    Button(main, text='Quit', command=main.destroy).grid(row=4, column=0, sticky=W, pady=4)
    Button(main, text='Show', command=show_answer).grid(row=4, column=1, sticky=W, pady=4)
    
    mainloop()
    

    【讨论】:

      【解决方案4】:

      这也可以(用户友好)

      from tkinter import *
      import tkinter.messagebox
      
      def show_answer():
          Ans = int(num1.get()) + int(num2.get())
          tkinter.messagebox.showinf('answer',Ans)
      
      main = Tk()
      
      Label(main, text="Enter Num 1:").grid(row=0)
      Label(main, text="Enter Num 2:").grid(row=1)
      
      num1 = Entry(main)
      num2 = Entry(main)
      
      num1.grid(row=0,column=1)
      num2.grid(row=1,column=1)
      
      Button(main,text='Quit',command=main.destroy).grid(row=4,column=0,sticky=W,pady=4)
      Button(main,text='Show',command=show_answer).grid(row=4,column=1,sticky=W,pady=4)
      
      mainloop()
      

      【讨论】:

      • 你的答案有缩进问题。
      • 这个答案在我看来是最简单的一个,但只是一个小错字。应该放 .showinfo 而不是 .showinf def show_answer(): Ans = int(num1.get()) + int(num2.get()) tkinter.messagebox.showinfo('answer',Ans)
      猜你喜欢
      • 1970-01-01
      • 2018-07-17
      • 2017-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      相关资源
      最近更新 更多