嘿,我正在尝试使用PyQt5为轨道模拟器编写UI。我已经创建了8个行星对象,并编写了可供UI读取和从类读取的函数,以便可以向用户显示正确的信息。
if planet == "Planet 1":
self.slider1.setValue(p.p1.radius)
self.colors.setId(p.p1.color)
self.slider2.setValue(p.p1.mass)
self.x_slider.setValue(p.p1.x)
self.y_slider.setValue(p.p1.y)
self.z_slider.setValue(p.p1.z)`
这段代码基本上说如果选择了行星1,则在UI上设置值以显示行星1的属性。当用户想要更改行星的属性时,我创建了一种类似的方法来写入行星。当我尝试任何一条路线时,都会出现属性错误。
P.s我还尝试在Planet类中编写一个方法来更改类中的属性,因为我认为这可能是问题所在。
def change(attribute,value):
if attribute == "radius":
self.radius = value
elif attribute == "colour":
self.colour = colour
elif attribute == "mass":
self.mass = value
elif attribute == "x":
self.x = value
elif attribute == "y":
self.y = value
elif attribute == "z":
self.z = value
elif attribute == "vx":
self.vx = value
elif attribute == "vy":
self.vy = value
elif attribute == "vz":
self.vz = value
答案 0 :(得分:0)
您的change()
函数不是方法。您需要将self
参数作为第一个参数传递:
class Planet (object):
def change(self, attribute, value):
...
您可以使用内置函数setattr
设置属性值(而不是定义自己的属性):
def your_meth(self):
...
setattr(self, your_attr, your_value)