python中stringvar不能修改_Python - Tkinter - StringVar中的标签文本不显示/更新

作者在将命令行程序转化为Tkinter GUI时遇到问题,尝试使用StringVar来动态更新标签的文本内容。尽管变量似乎更新了,但标签的显示并未随之更新。他们在代码中设置了Button的点击事件来触发变量更新,但仍然无效。问题在于标签的文本没有正确显示从变量获取的内容。
摘要由CSDN通过智能技术生成

我正在尝试转换我之前编写的一个简单的命令行程序,以获得GUI . 在开始向现有/工作代码添加内容之前,我想在Tkinter中构建GUI . 我终于开始取得进展,直到让事情显示出我想要的方式,直到我得到小部件,我想让他们的显示文本根据变量的内容而改变 .

从我在这里和各种文档中读到的,这样做的方法是 StringVar ,我试图这样做,但是当我运行程序时, status_msg Label小部件的文本没有't show up at all. I tried putting a set() call to update the variable in several places, and while it appears to update the variable, the label doesn't显示完全在窗口 . 最后,我尝试添加一个"Add Key"按钮调用的函数来强制设置调用并尝试使标签显示,但它仍然不起作用,尽管它确实打印出我对控制台的期望 .

我无法弄清楚我做错了什么 . 这是我的代码:

import tkinter as tk

numkeys = 0

keystring = str(numkeys) + " entries ready for parsing"

class Application(tk.Frame):

def __init__(self, master=None):

tk.Frame.__init__(self, master)

self.grid()

self.createWidgets()

def createWidgets(self):

self.numkeys = tk.StringVar()

self.numkeys.set(keystring)

api_frame = tk.LabelFrame(self, text="Key Entry", padx = 5, pady = 5)

api_frame.grid(padx = 10, pady = 10)

key1_lbl = tk.Label(api_frame, text = "Entry 1:", anchor = tk.W)

key1_lbl.grid(row = 0, column = 0)

self.key = tk.Entry(api_frame, width = 18)

self.key.grid(row = 0, column = 1)

key2_lbl = tk.Label(api_frame, text="Entry 2:")

key2_lbl.grid(row = 0, column = 2, padx = 5)

self.key2 = tk.Entry(api_frame, width = 45)

self.key2.grid(row = 0, column = 3, padx = 2, columnspan = 3)

status_msg = tk.Label(api_frame, textvariable = self.numkeys.get())

status_msg.grid(row = 1, column = 0, columnspan = 3)

btn_submit = tk.Button(api_frame, text="Add Key", width = 12, command = self.test)

btn_submit.grid(row = 1, column = 4, pady = 5)

btn_start = tk.Button(api_frame, text="Parse Keys", width = 12, command = None)

btn_start.grid(row = 1, column = 5, pady = 5)

#self.numkeys.set(keystring)

def test(self):

self.numkeys.set(keystring)

root.update_idletasks()

print("test function ran")

print(app.numkeys.get())

root = tk.Tk()

app = Application(master=root)

app.master.title('Tk test')

app.mainloop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值