python - 如何将Entry框中的输入放入Tkinter的标签中?
我正在尝试把输入框里提交的信息放到我的画布上的一个标签里。目前我在标签上看到的只有这些。
PY_VAR#
这是我现在的代码。
import tkinter
from tkinter import *
font = ("Times New Roman", 5)
font2 = ("Times New Roman", 10)
font3 = ("Times New Roman", 15)
def getData():
1a.get()
2a.get()
test()
def enterData():
global 1a, 2a
canvas = tkinter.Canvas(root, width=800, height=600)
box1 = Entry(textvariable = 1a).place(x=100, y=200)
box2 = Entry(textvariable = 2a).place(x=300, y=200)
Button(text = "enter data", font = font2, command = getData).place(x=560, y=100)
def test():
global 1a, 2a
1a = StringVar()
2a = StringVar()
root = tkinter.Tk()
canvas = tkinter.Canvas(root, width=800, height=600)
canvas.pack()
Label(root, text = 1a, font = font3).place(x=70, y=400)
enterData()
我也试着查看一下1a和2a被赋值成了什么,它们总是显示为PY_VAR#。
有没有人能帮我看看我的代码哪里出问题了?
2 个回答
1
你把Label
的text
参数赋值给了一个叫变量的1a
,而不是赋值给内容。你可以试试这样做:
Label(root, text=1a.get())
不过我得说,这段代码有点荒谬。1a
和2a
根本不能作为变量,place()
在创建图形用户界面时通常是个坏主意,你在做一些不必要的操作(函数getData
已经完全过时了),而且你总是在创建新的标签。
1
首先,你不想每次点击按钮时都创建新的 StringVar
,所以把这些变量的创建放到最上面,并给它们重新命名——变量名不能以数字开头(别忘了在 enterData
函数中也要修改对 1a
和 2a
的引用):
# import tkinter You shouldn't import tkinter in two different ways - get rid of this one...
from tkinter import *
font = ("Times New Roman", 5)
font2 = ("Times New Roman", 10)
font3 = ("Times New Roman", 15)
stringVar1a = StringVar()
stringVar2a = StringVar()
其次,1a.get()
和 2a.get()
这两行代码其实没什么用——它们只是获取输入框里的内容,但并没有对这些内容做任何处理。所以其实你不需要单独的 getData
和 test
函数,不过为了保持你的结构,我就不删它们了:
def getData():
test()
第三,当你创建标签时,不要把它的文本属性设置为 StringVar
,而是要把 textvariable 属性设置为 StringVar
:
Label(root, textvariable = stringVar1a, font = font3).place(x=70, y=400)