【发布时间】:2020-03-12 00:42:54
【问题描述】:
我正在尝试使单选按钮更改输入字段的位置(称为分配)
我期望它在按钮旁边将其网格化,但我得到了这个错误
Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 1702, in __call__
return self.func(*args)
File "<string>", line 16, in <lambda>
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 2223, in grid_configure
+ self._options(cnf, kw))
_tkinter.TclError: bad window path name ".!application.!entry"`
问题出在第 16 行的 lambda 函数
我尝试在函数中创建变量,我也尝试让它运行 exec。
这里是代码
from tkinter import *
import random
class application(Frame):
def __init__(self,master ):
Frame.__init__(self, master)
self.grid()
self.create_widgets()
def create_widgets(self, ):
assignment = Entry(self)
for i in self.winfo_children():
i.destroy()
self.var = IntVar()
for i in range(8):
Radiobutton(self, text = ('class ' + str(i + 1)), variable = self.var, value = (i+1), command = lambda i = i: assignment.grid()).grid(row = i, column = 1)
for i in range(8):
exec('class' + str(i) + ' = Label(self, text = \'34\')\nclass' + str(i) + '.grid(row = '+str(i)+',column = 3)')
print(self.var.get())
root = Tk()
root.title('dumb kid idiot test')
root.geometry('500x500')
app = application(root)
root.mainloop()
【问题讨论】:
-
你对 lambda 中的
i什么都不做。也永远不要像这样使用exec。 -
@Mike-SMT 你知道有什么更好的方法来做那个高管正在做的事情
标签: python tkinter radio-button grid-layout