Seite 1 von 1

Pyside2 Clicked TableItem

Verfasst: Dienstag 25. Februar 2020, 11:53
von AndiArbeit
Gude,

ich habe ein Problem mit einer Qt anwendung (Pyside2)

Ich möchte ein Event beim Klicken spezifischer Tableitems ausführen hierzu versuche ich beispielsweise folgendes.

Leider bekomme ich hierbei eine Fehlermeldung.

Vielleicht hat ja jemand damit erfahrung. Dr Google konnte mir leider nicht weiterhelfen.

Code: Alles auswählen

from PySide2 import QtCore, QtWidgets ,QtGui

tableWidget = QtWidgets.QTableWidget()
tableWidget.setGeometry(QtCore.QRect(0, 200, 411, 161))
tableWidget.setObjectName("tableWidget")

def clicked(node, x, y):
        print x
        print y
        print node

for x in range(10):

	for y in range(10):
	
		_tableWidget.setItem(x, y, QtWidgets.QTableWidgetItem(str(x*y)))
	
		if x == y :
		
			_tableWidget.item(0, 0).cellClicked.connect(partial(clicked,"x")) 

Vielen Dank im Vorraus

Mit freundlichen Grüßen,
AndiArbeit

Re: Pyside2 Clicked TableItem

Verfasst: Dienstag 25. Februar 2020, 11:54
von __deets__
Und verraetst du uns auch noch die Fehlermeldung?

Re: Pyside2 Clicked TableItem

Verfasst: Dienstag 25. Februar 2020, 12:24
von __blackjack__
Ich tippe mal auf einen `NameError` weil `_tableWidget` nirgends definiert ist. :-)

Edit: Ach nee, `SyntaxError` weil da die ``print`` als Anweisung verwendet wird, was es in Python 3 ja nicht mehr ist.

Re: Pyside2 Clicked TableItem

Verfasst: Dienstag 25. Februar 2020, 12:25
von __deets__
Ich denke ja eher TypeError wegen fehlender Argumente beim callback. So ein bisschen Rate mal mit Rosenthal ist doch immer wieder knorke.

Re: Pyside2 Clicked TableItem

Verfasst: Dienstag 25. Februar 2020, 12:31
von __blackjack__
`partial` ist auch undefiniert und wenn man das alles repariert, kommt:

Code: Alles auswählen

QWidget: Must construct a QApplication before a QWidget
Aborted (core dumped)
Der Fehler ist also das kein `QApplication`-Objekt erstellt wird. :-)

Re: Pyside2 Clicked TableItem

Verfasst: Dienstag 25. Februar 2020, 12:43
von AndiArbeit
Sorry hier noch die Fehlermeldung :D

_tableWidget.item(0, 0).cellClicked.connect(partial(clicked, parent))
AttributeError: 'PySide2.QtWidgets.QTableWidgetItem' object has no attribute 'cellClicked'

Ich habe aus einem relativ großen tool die snippets zusammen kopiert.

Wie gesagt es geht mir um eine Möglichkeit wie ich das klicken einzelner WidgetItems also Zellen mit einer Funktion verbinden kann

Re: Pyside2 Clicked TableItem

Verfasst: Dienstag 25. Februar 2020, 12:53
von __blackjack__
Tja, diese Objekte haben halt auch kein `cellClicked`-Signal. Warum denkst Du die hätten das? `QTableWidget`-Objekte haben so ein Signal und das liefert die Zeilen- und Spaltennummer der geklickten Zelle.

Re: Pyside2 Clicked TableItem

Verfasst: Dienstag 25. Februar 2020, 12:55
von __deets__
Na die Fehlermeldung ist ja recht eindeutig. cellClicked gibt's auf dem Item nicht. Woher hast du denn, dass es das geben sollte?

WAS es gibt ist https://doc.qt.io/qt-5/qtablewidget.html#cellClicked - also *EIN* Signal auf dem TableWidget selbst, und dann musst du aus den uebergebenen Koordinaten das Item aufloesen.

Re: Pyside2 Clicked TableItem

Verfasst: Dienstag 25. Februar 2020, 13:56
von AndiArbeit
Vielen Dank für die schnelle Antwort.

Damit kann ich arbeiten :)