我的任务是创建一个程序,你运行自己的贩毒集团(非常PC),有一组标签和一个按钮在窗口的一侧,你可以购买物品,每个物品是一个类的一部分,标签和按钮是为类内所说的物品。Tkinter偶尔会将这些标签按正确的顺序放置,但Tkinter不会为某些项目随机放置任何东西
我试着改变标签的放置方式,但我什么也没做。似乎什么都没用
下面是为每个项目生成标签和按钮的类
class drug:
def __init__(self, name, potency, duration, safety, buy):
self.name = name
self.origin = ('Brighton', 'London', 'Netherlands', 'China', 'USA', 'Mexico')[ran.randint(0, 5)]
self.potency = potency
self.duration = duration
self.safety = safety
self.buy = buy
self.seller = None
self.paneltitle = Label(mainFrame, text=self.name, font=('Segoe UI', 20, 'bold'))
self.panellocation = Label(mainFrame, text=self.origin, font=('Segoe UI', 12, 'bold italic'))
self.panelprice = Label(mainFrame, text='$' + str(self.buy) + ' (/g)', font=('Segoe UI', 12, 'bold italic'))
self.buybtn = ttk.Button(mainFrame, text='Purchase')
def place_gen_panel(self, x, y):
self.paneltitle.place(x=x, y=y)
self.panellocation.place(x=x, y=y+30)
self.panelprice.place(x=x, y=y+60)
self.buybtn.place(x=x, y=y+90)
下面是运行place\u gen\u panel()的代码,其中的参数是从非常简单的for i in range循环计算出来的
for i in range(0, 3):
obj = drug()
master_list.append(obj)
obj.place_gen_panel(10, i*130)
我没有足够高的声誉发布图片,所以我包括链接,而不是
这是一个程序,当它决定要工作
https://i.ibb.co/gmCw21t/Screenshot-2019-09-18-at-06-29-19.png
大多数时候都是这样,不总是中间的项目,有时只显示一个项目
https://i.ibb.co/HF22DD8/Screenshot-2019-09-18-at-06-29-39.png
非常感谢你们抽出时间,非常感谢你们的帮助
通常最好避免过度使用
place
,因为它需要大量的计算才能使小部件精确地显示在您想要的位置。使用pack
或grid
是首选,因为tkiner将为您管理职位我建议您更改
drug
类,使其从tk.Frame
继承。一旦你得到了正确的几何图形,你就不必处理重叠的小部件了相关问题 更多 >
编程相关推荐