2010-01-03 71 views
7

我有這個簡單的問題,我可以抓住按鈕點擊的事件,但現在我需要處理的點擊了一個小部件,這裏是部分代碼:PyQt的,單擊操作上QWidget的

self.widget = QtGui.QWidget(self) 
self.widget.setStyleSheet("QWidget { background-color: %s }" % color.name()) 
self.widget.setGeometry(150, 22, 50, 50) 
self.connect(???) 

那麼,我應該把什麼?在創建的小部件上抓取點擊動作? 謝先進

回答

6

使用mousePressEvent代替。

import sys 

from PyQt4.QtGui import QWidget, QApplication 

class MyWidget(QWidget): 
    def mousePressEvent(self, event): 
     print "clicked" 

app = QApplication(sys.argv) 

widget = MyWidget() 
widget.show() 

app.exec_() 
9

你可以試試這個 我發現這個從this blog site's comment box from Jared Glass這對我來說

self.widget.mouseReleaseEvent=self.myfunction 

self.widget.mouseReleaseEvent=lambda event:print 'working' 

self.widget.mouseReleaseEvent=lambda event,my_variable:self.myfunction(event,my_variable) 

只有最後的考試工作正常我已經在自己的休息書上寫下了全部已在http://popdevelop.com/2010/05/an-example-on-how-to-make-qlabel-clickable/中提及過。 最後一段代碼可以幫助您傳遞任何變量,例如:如果存在多個小部件,則小部件名稱或小部件編號。

+0

這太棒了!像夢一樣工作。 – 2017-06-02 04:24:13