我有个问题。我使用类动态创建按钮。每个按钮都存储在一个列表中,因此我可以稍后通过索引来使用它们。不过,我在放置/显示按钮时遇到了问题。当我创建一个按钮时,它会完美地显示出来。当我创建另一个时,由于某种原因它会出现在第一个上面。如能帮助解决此问题,我们将不胜感激。谢谢!你知道吗
代码如下:
import tkinter as tk
window = tk.Tk()
window.geometry('800x600')
placeX = 20
placeY = 20
bl = []
def direction(type_):
pass
class SideBar():
def __init__(self, name):
global window
global placeX
global placeY
global bl
self.name = name
self.placeX = placeX
self.placeY = placeY
self.bl = bl
self.bl.append(self.name)
print(self.bl)
def create_folder(self, index):
self.bl[index] = tk.Button(window, text = self.name, command = lambda: direction(self.name))
self.bl[index].config(height = 3, width = 6)
self.bl[index].place(x = self.placeX, y = self.placeY)
self.placeY += 100
Computer = SideBar('Computer')
Documents = SideBar('Documents')
Computer.create_folder(0)
Documents.create_folder(1)
window.mainloop()
我认为问题出在create\u folder函数的某个地方。你知道吗
您正在创建一个类的两个不同实例。两者都有各自的局部变量。创建一个实例并使用以下内容:
您可能打算使用类变量而不是实例属性。class变量保存类的所有实例之间共享的数据,事实上,只要有类定义,它就可以有一个值。而实例属性可以具有特定于类的单个实例的值,通常采用
self.attribute
格式。你知道吗您尝试使用
self.placeY
的方式符合类变量的典型用法。删除:添加:
最后,替换:
使用:
相关问题 更多 >
编程相关推荐