【问题标题】:Python: How to change text of a message widget to a user inputPython:如何将消息小部件的文本更改为用户输入
【发布时间】:2016-09-29 18:09:02
【问题描述】:

所以我正在制作一个需要用户输入值的程序。我希望通过消息小部件(或标签小部件)显示该值,并在输入新输入时更新。

def Enter():
    s = v.get()
    print (v.get())

    e.delete(0, END)
    e.insert(0, "")

#Code, Code, Code
...

# Area To Enter Text
v = StringVar()
e = Entry(root, textvariable=v)
e.pack()

m = Message(root, text = "Your Input")
m.pack()

# Enter Button
b = Button(root, text="OK", command=Enter)
b.pack()

有没有办法让v的变量替换Message Widget的文字??

注意:

如果我将text 替换为textvariable,它会在按下每个字符键后更新文本,而我需要在用户按下按钮时更新文本。


我的完整代码:

from tkinter import *
import os

# All Functions Below
def callback():
    print ("HI")

def Exit():
    os._exit(0)

def Enter():
    s = e.get()
    print (e.get())
    m.configure(text=s)
    e.delete(0, END)
    e.insert(0, "")

def Population():
    root = Tk

    root.mainloop()

def SurvivalRate():
    root = Tk

    root.mainloop()

def BirthRate():
    root = Tk

    root.mainloop()

def NewGen():
    root = Tk

    root.mainloop()

root = Tk()


generation = 0

menubar = Menu(root)
menubar.add_command(label="Hello!", command=callback)
menubar.add_command(label="Quit!", command=Exit)


# Area To Enter Text
e = Entry(root)
e.pack()

m = Message(root, text = e)
m.pack()

# Enter Button
b = Button(root, text="OK", command=Enter)
b.pack()

Pop = Button(root, text="Population", command=Population)
Pop.pack()

【问题讨论】:

  • 看一下tkinter按钮的command参数。
  • 谢谢!还要教几个小时,晚上再看:)
  • 好的。但现在它返回的是.56748976,而不是PY_VAR0。但我可以等你回来。或者如果其他人可以提供帮助,将不胜感激。
  • 其实是个新问题。您最初发布的 sn-p 现在很好并且运行正常,文本已正确获取。
  • ...但是通过应用答案第二部分中的内容并将您的文本设置为:m = Message(root, text = "Monkey") 修复它:dl.dropboxusercontent.com/u/1155139/fixed.py

标签: python tkinter


【解决方案1】:

只需添加:

m.configure(text=s) 

到你的功能:

def Enter():
    s = v.get()
    print (v.get())
    m.configure(text=s)
    e.delete(0, END)
    e.insert(0, "")

附带说明,您不一定需要StringVar()。下面的代码将完全一样:

def Enter():
    s = e.get()
    m.configure(text=s)
    e.delete(0, END)
    e.insert(0, "")

#Code, Code, Code
...

# Area To Enter Text
e = Entry(root)
e.pack()

m = Message(root, text = "Your Input")
m.pack()

# Enter Button
b = Button(root, text="OK", command=Enter)
b.pack()

root.mainloop()

【讨论】:

  • 谢谢。但是在我输入一个字符之前,标签说是PY_VAR0。有没有办法让它留空?
  • @JackBond 在我运行的代码的 sn-p 上,如果我将它嵌入到基本的 tkinter 窗口中,它会显示“您的输入”。你的完整代码是什么?
  • 您不需要StringVar() 顺便说一句。可以直接运行s = e.get()
猜你喜欢
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
  • 2019-02-05
  • 2020-02-05
  • 2021-11-20
  • 2014-06-03
  • 2021-04-26
  • 1970-01-01
相关资源
最近更新 更多