如何找到我们单击的qt小部件?

时间:2019-01-09 09:19:04

标签: python pyqt

在QT QApplication中,图像显示在scrollArea内部。在此图像上添加了几个Qlabel。我希望每个Qlabel都有一个不同的事件。如何找到我们在链接到Qlkabel mousePressEvent的函数的定义中单击的qt小部件?

def fct1(event):
    pt_wid_click = wind1.ui.scrollArea.childAt(event.globalX(), event.globalY())
    print(pt_wid_click)

pt_wid = []
for ii in range(8):
    pt_wid.append(QLabel(wind1.ui.scrollAreaWidgetContents))
    pt_wid[ii].move(100+20*ii, 200+20*ii)
    pt_wid[ii].setText('+ text {}'.format(ii))
    pt_wid[ii].mousePressEvent = fct1

找到的唯一小部件是Qlabel(图像)。


使用lambda函数的解决方案始终使用fct1发送相同的变量:

def fct1(ii):
    print(ii)

并带有mousePressEvent行:

pt_wid[ii].mousePressEvent = lambda event:fct1(ii)

在这种情况下,它总是打印“ 7”

0 个答案:

没有答案