wx.Point() statt Tupel

Plattformunabhängige GUIs mit wxWidgets.
Antworten
moe
User
Beiträge: 17
Registriert: Montag 30. Juni 2008, 18:00

Hallo Forum,

ich bin gerade dabei mich in wxPython einzuarbeiten. Bei diesem GUI-Toolkit kann man die Widgets mit dem Parameter "pos" absolut positionieren. Dies habe ich dann mit einem Tupel (10, 10) zum Beispiel gemacht. PyCharm gibt aber einen Hinweis, dass man für die Koordinaten die Klasse wx.Point() nutzen sollte. Also zum Beispiel

Code: Alles auswählen

pos=wx.Point(10, 10)
Jetzt ist meine Frage was dabei der Unterschied ist und warum man wx.Point() nutzen sollte?

Gruß

moe
Benutzeravatar
__blackjack__
User
Beiträge: 14131
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@moe: Den Unterschied kannst Du Dir doch in der jeweiligen Dokumentation anschauen. Also was die Objekte jeweils an Methoden haben. Die C++-Bibliothek kennt keine Python-Tupel, die benutzt an der Stelle `wxPoint`-Objekte. Die Python-Anbindung ist so nett aus Tupeln solche Objekte zu erstellen.

Ob man `wx.Point` nutzen sollte ist eine Frage die wahrscheinlich die Dokumentation der Python-Anbindung beantworten kann. Wenn die diese automatische Umwandlung als veraltet markiert haben und die abschaffen wollen, dann sollte man das nicht mehr nutzen. Falls nicht, ist die Frage ob man mit dem meckern von PyCharm leben kann, oder mit dem expliziten verwenden von `wx.Point`. Oder ob man die Prüfung von Typannotationen in PyCharm abstellt.
“It is easier to change the specification to fit the program than vice versa.” — Alan J. Perlis
moe
User
Beiträge: 17
Registriert: Montag 30. Juni 2008, 18:00

Hallo blackjack,

also in der Doku von wxPython habe ich nichts gefunden, dass diese automatische Umwandlung als veraltet markiert wurde. Danke aber für den Hinweis, dass an dieser Stelle Tupel zu diesen wx.Point()-Objekten konvertiert werden.
Benutzeravatar
__blackjack__
User
Beiträge: 14131
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich habe mal geschaut wo man Typannotationen für wxPython her bekommt: Das ist ein eigenes, von wxPython unabhängiges Projekt, das die HTML-Dokumentation von wxPython auswertet. Das setzt als Typ für `wx.Point`-Argumente aber `Union[tuple[int, int], 'Point'`: https://github.com/AlexionSoftware/type ... er.py#L620

PyCharm benutzt also wohl eine andere Quelle für die Typannotationen‽
“It is easier to change the specification to fit the program than vice versa.” — Alan J. Perlis
Benutzeravatar
sparrow
User
Beiträge: 4546
Registriert: Freitag 17. April 2009, 10:28

@moe: Ergänzend: In allen mir bekannten Toolkits sollte man Widgets nicht fest positionieren sondern Layoutmanager verwenden.
Benutzeravatar
Dennis89
User
Beiträge: 1592
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

ich habe die Erfahrung auch schon gemacht, dass man sich nicht auf alle Anmerkungen von PyCharm verlassen kann. Allerdings kam das bei mir wirklich eher selten vor.


Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
moe
User
Beiträge: 17
Registriert: Montag 30. Juni 2008, 18:00

sparrow hat geschrieben: Freitag 12. September 2025, 05:48 @moe: Ergänzend: In allen mir bekannten Toolkits sollte man Widgets nicht fest positionieren sondern Layoutmanager verwenden.
Hi, das ist mir bekannt. Ich hatte der Einfachheit halber die Widgets erst mal fest positioniert.
Antworten