Cześć, mam problem(kolejny :) )...
Otóż. Przy pomocy Qt Designera stworzyłem sobie program do obsługi pewnego kontrolera, który zawiera w sobie karty(imho ważne), teraz doprowadziłem przyciski do stanu interaktywności dzięki wam i teoretycznie wszystko działa.
Jednak wymyśliłem sobie, że w jednej karcie program będzie wyświetlał tło-obrazek(done) i po kliknięciu w dane miejsce tego obrazka, program będzie rysować nad nim okrąg w miejscu w którym kliknęliśmy wraz z zapisem pozycji do listy. Jednakże jest problem, bo nie wiem na jakiej zasadzie działa wykrywanie zdarzeń typu kliknięcie myszką .mousePressEvent(event). Debugger zgłasza mi błąd w argumencie funkcji (event nie istnieje). Próbowałem dodać przed** def setupUi(self, menu)** funkcję:
def mousePressEvent(self, e):
self.pressed = True
self.x = e.x()
self.y = e.y()
print str(e.x())+","+str(e.y)
QWidget.mousePressEvent(self, e)
ale nie wiem na jakiej zasadzie ta funkcja mousePressEvent w self.lokalizacja.background powinna być zrealizowana/odpalona.
Poniżej znajduje się kod, w którym wg. mnie dzieją się istotne dla ww. problemu rzeczy:
class Ui_Menu(object, zmienne):
(dużo def funkcji, (...). i dalej->)
def setupUi(self, Menu):
Menu.setObjectName(_fromUtf8("Menu"))
(...)
self.lokalizacja = QtGui.QWidget()
self.lokalizacja.setObjectName(_fromUtf8("lokalizacja"))
self.lokalizacja.hboxlayout = QtGui.QHBoxLayout(self.lokalizacja)
self.lokalizacja.setLayout(self.lokalizacja.hboxlayout)
self.lokalizacja.backgroundpixmap = QtGui.QPixmap("pic.jpg")
self.lokalizacja.background = QtGui.QLabel(self.lokalizacja)
self.lokalizacja.background.setPixmap(self.lokalizacja.backgroundpixmap)
self.lokalizacja.background.setGeometry(0, 0, 551, 431)
self.lokalizacja.background.mousePressEvent(event)
self.tabWidget.addTab(self.lokalizacja, _fromUtf8(""))
(...)
def retranslateUi(self, Menu):
(...)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Menu = QtGui.QDialog()
ui = Ui_Menu()
ui.setupUi(Menu)
thread2 = MyThread2(zmienne.opusc2)
thread2.start()
Menu.show()
sys.exit(app.exec_())