【发布时间】:2019-10-10 22:25:43
【问题描述】:
我有一个名为Bones 的类,我的skeleton 字典中有5 个Bones。但是在我的实际实现中,有 300 多个骨骼,这就是我今天在 stackoverflow 上问这个问题的原因。
每个Bone 都有:
-
ID: 用于识别骨骼的 int -
w:w 位置(在-1和1之间浮动) -
x:x 位置(在-1和1之间浮动) -
y:y 位置(在-1和1之间浮动) -
z:z 位置(在-1和1之间浮动)
Bone.py
INCREMENT = 0.01
class Bone:
def __init__(self, boneId, w, x, y, z):
self.id = boneId
self.w = w
self.x = x
self.y = y
self.z = z
def shouldChangePos(self, num):
if (num >= 1 or num <= -1):
return False
return True
def incrW(self):
if(self.shouldChangePos(self.w)):
self.w = self.w + INCREMENT
def decrW(self):
if(self.shouldChangePos(self.w)):
self.w = self.w - INCREMENT
def incrX(self):
if(self.shouldChangePos(self.x)):
self.x = self.x + INCREMENT
def decrX(self):
if(self.shouldChangePos(self.x)):
self.x = self.x - INCREMENT
def incrY(self):
if(self.shouldChangePos(self.y)):
self.y = self.y + INCREMENT
def decrY(self):
if(self.shouldChangePos(self.y)):
self.y = self.y - INCREMENT
def incrZ(self):
if(self.shouldChangePos(self.z)):
self.z = self.z + INCREMENT
def decrZ(self):
if(self.shouldChangePos(self.z)):
self.z = self.z - INCREMENT
问题说明
我正在尝试制作一个看起来像这样的tkinter GUI:
传说:
- 绿色 - 代表
Frame(只是我的注释来解释) - 红色 - 是对象的属性(只是我的注释来解释)
- 黑色 - 是对象的方法(只是我的注释来解释)
- 蓝色 - 是显示给我的文本和按钮
如您所见,它显示了ID、w、x、y、z。在它的下方,有一个+按钮和一个-按钮。每次单击这些按钮时,我想减少对象中的相应值并更新显示的tkinter 数字。我知道如何手动执行此操作,但根据我的要求,我有 300+ Bones。我无法手动制作这些框架。
如何在循环中创建这些框架并在单击 + 或 - 按钮时更新 GUI 和对象上显示的值?强>
main.py
from tkinter import *
from tkinter import ttk
from Bone import *
skeleton = {
1: Bone(-0.42, 0.1, 0.02, 0.002, 0.234),
4: Bone(4, 0.042, 0.32, 0.23, -0.32),
11: Bone(11, 1, -0.23, -0.42, 0.42),
95: Bone(95, -0.93, 0.32, 0.346, 0.31),
}
root = Tk()
root.geometry('400x600')
boneID = Label(root, text="ID: 1")
boneID.grid(row=1, column=1, sticky=W, padx=(0, 15))
w = Label(root, text="-0.42")
w.grid(row=1, column=2, sticky=W)
x = Label(root, text="0.02")
x.grid(row=1, column=4, sticky=W)
y = Label(root, text="0.002")
y.grid(row=1, column=6, sticky=W)
z = Label(root, text="0.234")
z.grid(row=1, column=8, sticky=W)
wPlusBtn = Button(root, text="+")
wPlusBtn.grid(row=2, column=2)
wMinusBtn = Button(root, text="-")
wMinusBtn.grid(row=2, column=3, padx=(0, 15))
xPlusBtn = Button(root, text="+")
xPlusBtn.grid(row=2, column=4)
xMinusBtn = Button(root, text="-")
xMinusBtn.grid(row=2, column=5, padx=(0, 15))
yPlusBtn = Button(root, text="+")
yPlusBtn.grid(row=2, column=6)
yMinusBtn = Button(root, text="-")
yMinusBtn.grid(row=2, column=7, padx=(0, 15))
zPlusBtn = Button(root, text="+")
zPlusBtn.grid(row=2, column=8)
zMinusBtn = Button(root, text="-")
zMinusBtn.grid(row=2, column=9, padx=(0, 15))
root.mainloop()
【问题讨论】:
标签: python python-3.x dictionary tkinter