【问题标题】:Tkinter StringVar shows random numbers instead of variable on labelTkinter StringVar 在标签上显示随机数而不是变量
【发布时间】:2020-12-15 19:54:16
【问题描述】:

标题说明了一切。

import tkinter as tk
from tkinter import filedialog, Text, StringVar

root = tk.Tk()

root.resizable(False, False)

var1 = StringVar()

topn = ""
print(topn)

def addApp():
    global topn
    topn = topn + "1"
    print(topn)
    var1.set(topn)



canvas = tk.Canvas(root, height=500, width=400, bg="#263D42")
canvas.pack()

frame = tk.Frame(root, bg="orange")
frame.place(relwidth=0.8, relheight=0.8, relx=0.1, rely=0.1)

Resultlabel = tk.Label(root,text=var1.get,  padx=100, pady=5, fg="white", bg="grey")
Resultlabel.pack()
t
openFile = tk.Button(frame, text="Open File", padx=10, pady=5, fg="white", bg="#263D42", command=addApp)
openFile.pack()

root.mainloop()

[顺便说一句,忽略打开文件,我正在按照教程学习 tkinter 的基础知识,然后编辑代码以满足我的需要。我忘了更改按钮中的文字。]

https://i.stack.imgur.com/2FVKG.png

【问题讨论】:

  • 你想要textvariable=var1text= 只是为标签设置了一个静态文本字符串,但你没有给它任何有意义的字符串。 text=var1.get() 会及时为您提供 StringVar 的内容,但不会自动更新。
  • 改用text=var1.get()

标签: python python-3.x tkinter pycharm


【解决方案1】:

texttextvariable 不同。 text 用于将静态文本与小部件相关联,textvariable 用于使小部件的文本与变量的值同步。

如果您希望 ResultLabel 始终显示 var1 中的内容,您必须像这样定义它:

Resultlabel = tk.Label(root,textvariable=var1,  padx=100, pady=5, fg="white", bg="grey")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 2014-07-31
    • 2020-04-18
    • 2022-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多