必须有更好的方法来做到这一点:
def map_leds(self, i):
if i[0] == 1:
self.ledg_1_1.setVisible(True)
self.ledr_1_1.setVisible(False)
else:
self.ledg_1_1.setVisible(False)
self.ledr_1_1.setVisible(True)
###############################################
if int(i[1]) == 1:
self.ledg_1_2.setVisible(True)
self.ledr_1_2.setVisible(False)
else:
self.ledg_1_2.setVisible(False)
self.ledr_1_2.setVisible(True)
###############################################
if int(i[2]) == 1:
self.ledg_1_3.setVisible(True)
self.ledr_1_3.setVisible(False)
else:
self.ledg_1_3.setVisible(False)
self.ledr_1_3.setVisible(True)
###############################################
if int(i[3]) == 1:
self.ledg_2_1.setVisible(True)
self.ledr_2_1.setVisible(False)
else:
self.ledg_2_1.setVisible(False)
self.ledr_2_1.setVisible(True)
###############################################
if int(i[4]) == 1:
self.ledg_2_2.setVisible(True)
self.ledr_2_2.setVisible(False)
else:
self.ledg_2_2.setVisible(False)
self.ledr_2_2.setVisible(True)
###############################################
if int(i[5]) == 1:
self.ledg_2_3.setVisible(True)
self.ledr_2_3.setVisible(False)
else:
self.ledg_2_3.setVisible(False)
self.ledr_2_3.setVisible(True)
###############################################
if int(i[6]) == 1:
self.ledg_3_1.setVisible(True)
self.ledr_3_1.setVisible(False)
else:
self.ledg_3_1.setVisible(False)
self.ledr_3_1.setVisible(True)
###############################################
if int(i[7]) == 1:
self.ledg_3_2.setVisible(True)
self.ledr_3_2.setVisible(False)
else:
self.ledg_3_2.setVisible(False)
self.ledr_3_2.setVisible(True)
###############################################
if int(i[8]) == 1:
self.ledg_3_3.setVisible(True)
self.ledr_3_3.setVisible(False)
else:
self.ledg_3_3.setVisible(False)
self.ledr_3_3.setVisible(True)
我有9个LED,我的函数map_leds
收到一个由len 9填充0和1组成的列表。如果第一个值为1,则第一个LED应该为绿色(这是GUI,因此LED实际上是一幅图片,我必须在两张图片之间切换,因此需要使用“ setVisible”功能)。如果第一个值为0,则LED(应显示)为红色。对于所有其他值,依此类推。
比起拥有巨大的if-else语句块,必须有一种更好的方法来实际完成所有这些工作,对吗?
您想做三件事:
首先,将您初始化led_r
为数组:
self.led_r = []
for i in range(3):
self.led_r[i] = [your_obj_constructor() for j in range(3)]
现在,您可以使用两条线:
for x in range(9):
self.led_r[x // 3][x % 3].setVisible(i[x] == 1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句