Всем добра.
Пишу интерфейс на PyQt5. Есть QFrame, в котором расположено 9 QLabel с QPixmap(QImage). При клике на изображение (QLabel), вызываю функцию.
На данный момент, проблема состоит в том, что реализовал я все очень криво, совсем не 'pythonic way' (хотя я, как самоучка, обычно не парюсь по поводу красоты, так как не знаю, что это(Я старый солдат, и не знаю слов любви, донна Роза ...)). В __init__() главного окна я пишу вот такую лабуду:
self.ui.label_gv_0.mousePressEvent = self.set_img_0
self.ui.label_gv_1.mousePressEvent = self.set_img_1
self.ui.label_gv_2.mousePressEvent = self.set_img_2
self.ui.label_gv_3.mousePressEvent = self.set_img_3
self.ui.label_gv_4.mousePressEvent = self.set_img_4
self.ui.label_gv_5.mousePressEvent = self.set_img_5
self.ui.label_gv_6.mousePressEvent = self.set_img_6
self.ui.label_gv_7.mousePressEvent = self.set_img_7
self.ui.label_gv_main.mousePressEvent = self.set_img_m
Соответственно приходится создавать 9 одинаковых функций, что есть позор. Вот пример:
def set_img_0(self, event):
global last_buffered_img
last_buffered_img = nine['img_0']
self.show_img(nine['img_0'])
self.del_img()
self.nine_in_one()
Как я понял, из QMouseEvent, вытащить информацию можно только о координатах, но не о конкретном объекте. Подскажите, как поступать в таких ситуациях? Как отловить, по какому конкретно изображению кликнули, или как передать в вызываемый метод параметр с именем изображения при таком отлове события? Как вообще в питоне группировать подобные вещи, чтобы получалось красиво, кратко и элегантно?