如何将变量嵌入Tkinter标签文本?报错:positional argument follows keyword argument
解决Tkinter标签变量插入时的
positional argument follows keyword argument报错 嘿,这个报错我太熟悉啦!咱们先拆解一下问题:positional argument follows keyword argument翻译成大白话就是——你把不用参数名的位置参数,放在了带参数名的关键字参数后面,Python的参数规则可不允许这种操作哦。
你大概率是这么写错的
举个例子,你可能写了类似这样的代码:
import tkinter as tk root = tk.Tk() x = "我的变量内容" # 错误写法:text是关键字参数,后面直接跟x这个位置参数,又接着font关键字参数 label = tk.Label(root, text="当前变量值:", x, font=("微软雅黑", 12)) label.pack() root.mainloop()
这里的问题有两个:
x不是TkinterLabel组件的合法位置参数,你想把它和前面的文本拼接,却直接当成参数传了;- 就算它是合法参数,你把位置参数
x放在了关键字参数text=...之后,这就违反了Python的参数传递规则——所有关键字参数必须放在位置参数的后面。
正确的写法:把变量嵌入标签文本里
要在标签文本中加入变量,你需要先把变量和固定文本拼接成一个完整的字符串,再通过text关键字参数传递,几种常用方法如下:
方法1:f-string格式化(最推荐,Python3.6+支持)
label = tk.Label(root, text=f"当前变量值:{x}", font=("微软雅黑", 12))
方法2:str.format()方法
label = tk.Label(root, text="当前变量值:{}".format(x), font=("微软雅黑", 12))
方法3:字符串拼接(仅当x是字符串时适用)
label = tk.Label(root, text="当前变量值:" + x, font=("微软雅黑", 12))
这样修改后,所有参数都是关键字参数(除了第一个root是位置参数),既符合Python的规则,也实现了把变量插入标签文本的需求~
内容的提问来源于stack exchange,提问作者Mirkó Verő
相关产品推荐
相关产品推荐

