你好,我试着在循环中这样做,但不明白为什么只有最后创建的一个是唯一一个限制?我想将循环中创建的12个小部件限制为4个符号。有人能帮我吗?:3个
对不起,如果有什么不清楚的地方,我第一次问这个问题。你知道吗
from tkinter import *
import trace
import random
class Plansza:
def __init__(self, master):
self.frame = Frame(master, bg="brown")
self.frame.pack()
self.tab = [random.randint(1, 6),random.randint(1, 6),random.randint(1, 6),random.randint(1, 6)]
print(self.tab)
print(len(self.tab))
self.max_len = 4
self.wynik = StringVar()
self.wynik.set(self.tab)
self.goal = Entry(self.frame, width=6, font=50, fg="purple", justify=CENTER, textvariable=self.wynik, show="*")
self.goal.grid(row=0, column=1, padx=30, pady=30)
self.pokaz = Button(self.frame, text = "Pokaż", command=self.show)
self.pokaz.grid(row=0, column=2)
self.wiersz=1
print(self.wynik.get())
self.var = [1,1,1,1,1,1,1,1,1,1,1,1]
self.iter = 0
self.map()
self.sprawdz = Button(self.frame, text = "Sprawdź")
self.sprawdz.grid(row=self.wiersz+1, column=1, padx=50, pady=50)
def on_write(self, *arg):
s = self.var[self.iter].get()
if len(s) > self.max_len:
self.var[self.iter].set(s[:self.max_len])
def show(self):
self.goal.config(show="")
def map(self):
self.var[self.iter]=StringVar()
self.var[self.iter].trace_variable("w", self.on_write)
self.pole_na_odp = Entry(self.frame, width=6, font=50, fg="purple", justify=CENTER, textvariable=self.var[self.iter])
self.pole_na_odp.grid(row=self.wiersz, column=1, padx=20, pady=20)
self.wiersz+=1
self.var.append([])
self.iter+=1
if(self.wiersz<12):
self.map()
root = Tk()
b = Plansza(root)
root.mainloop()
[编辑]我做了一个列表,但现在我有另一个错误: 每当我想在我的条目小部件中键入一些内容时,我都会遇到如下错误:
s = self.var[self.iter].get()
AttributeError: 'int' object has no attribute 'get'
而且,即使在最后一个条目窗口小部件中,也不再限制唱歌的次数。你知道吗
(请回答编辑中的问题。)
在这条线上
看起来您正试图使用
get()
返回self.var
的元素。列表不是这样工作的。我很确定你想要的是相关问题 更多 >
编程相关推荐