Hallo zusammen,
vielleicht kann mir jemand helfen. Ich versuche gerade zu verstehen, wie man ein dialog mit einem treeView aufbaut. Leider finde ich wenn überhaupt nur komplizierte Beispiele, die entweder import Qt brauchen oder direkt mit jede Menge Overhead versehen sind, die das Verständnis dafür nicht erleichtern.
Daher bin ich auf der Suche nach einem ganz einfachen Beispiel, ohne rekursive Lösung oder so. Nur ein paar fix fest programmierte Daten, damit man den Weg nachvollziehen kann, das würde mir schon reichen
Wäre dankbar für jede Hilfe
Viele Grüße
mdGo88
Einfaches Beispiel für treeView mit pyQt
Hallo und danke für Deine Antwort.
Ich denke da z.B. an Daten, die entweder aus einem dict oder einer Liste kommen oder auch Daten die aus eine sQLite DB kommen.
Ich nutze den Eric4, da ist der QtDesigner mit drin, aber scheinbar nicht das ganze Paket mit Qt oder so.
Denn wenn ich sage import Qt, dann kommt da eine Fehlermeldung.
Was bringt mir das Paket mehr, ist es auch kostenlos, wo bekomme ich es?
Ich hab auch schon ein bischen auf Trolltech herumgeschnuppert. Da blicke ich aber nicht wirklich durch. Ausserdem ist dort alles auf C++ gemünzt.
Viele Grüße
Manfred Dessel
Ich denke da z.B. an Daten, die entweder aus einem dict oder einer Liste kommen oder auch Daten die aus eine sQLite DB kommen.
Ich nutze den Eric4, da ist der QtDesigner mit drin, aber scheinbar nicht das ganze Paket mit Qt oder so.
Denn wenn ich sage import Qt, dann kommt da eine Fehlermeldung.
Was bringt mir das Paket mehr, ist es auch kostenlos, wo bekomme ich es?
Ich hab auch schon ein bischen auf Trolltech herumgeschnuppert. Da blicke ich aber nicht wirklich durch. Ausserdem ist dort alles auf C++ gemünzt.
Viele Grüße
Manfred Dessel
Also wenn Du PyQt bzw. ein QTreeWidget benutzen möchtest kommst Du nicht umhin es zu importieren.
Die Pakete heißen aber nicht nur Qt sondern PyQt4.paketName
Auch wenn das Buch dem ein oder anderen komplett gegen den Strich geht fand ich es gerade zu Anfagen ganz gut.
Die Rede ist von:
http://openbook.galileocomputing.de/pyt ... efdab7d505
Da steht bisschen was über, wie benutze ich PyQt usw.
Hoffe das trifft dein Problem mit. Was dann mit dem Treewidget geht, also wie es funktioniert
kannst Du getrost bei Trolltech bzw. im Assistent nachlesen, weil daran ändert sich ja nichts.
Abgeshen davon gibts es:
http://www.riverbankcomputing.co.uk/sta ... asses.html
edit:
gerade geshen das nicht alles nach Python übersetzt ist aber manches ...
Gruß
Die Pakete heißen aber nicht nur Qt sondern PyQt4.paketName
Auch wenn das Buch dem ein oder anderen komplett gegen den Strich geht fand ich es gerade zu Anfagen ganz gut.
Die Rede ist von:
http://openbook.galileocomputing.de/pyt ... efdab7d505
Da steht bisschen was über, wie benutze ich PyQt usw.
Hoffe das trifft dein Problem mit. Was dann mit dem Treewidget geht, also wie es funktioniert
kannst Du getrost bei Trolltech bzw. im Assistent nachlesen, weil daran ändert sich ja nichts.
Abgeshen davon gibts es:
http://www.riverbankcomputing.co.uk/sta ... asses.html
edit:
gerade geshen das nicht alles nach Python übersetzt ist aber manches ...
Gruß
Das fand ich auch etwas verwirrend:
Das eine mal muss man
from PyQt4 import QtGui, QtCore
importieren,
das nächste mal ist es
from PyQt4.Qt import QSql
Am Ende hat das immer bei mir funktioniert (Auch wenn mich dafür hier jeder hauen wird:
from PyQt4.Qt import *
from PyQt import QtGui, QtCore
Das eine mal muss man
from PyQt4 import QtGui, QtCore
importieren,
das nächste mal ist es
from PyQt4.Qt import QSql
Am Ende hat das immer bei mir funktioniert (Auch wenn mich dafür hier jeder hauen wird:
from PyQt4.Qt import *
from PyQt import QtGui, QtCore
Mein Gott, das ist doch nun wirklich nicht schwer. PyQt4 ist das Gesamtpaket, das wiederum einzelne Module für jedes Qt-Modul (QtCore, QtGui, QtSql, QtNetwork, usw.) enthält. Die Module wiederum gliedern sich nach Funktionalität (QtCore für Basistypen, QtGui für Benutzerschnittstellen, QtSql für Datenbankzugriff, usw.). Steht alles in der Dokumentation …
ist jedenfalls ziemlicher Unsinn, denn so importierst Du QtGui und QtCore doppelt.
Code: Alles auswählen
from PyQt4.Qt import *
from PyQt4 import QtGui, QtCore
Ersteres ist mir klar.
Aber warum bekomme ich QSql nicht, wenn ich from PyQt4 import *
eingebe, sondern muss das mit from PyQt4.Qt machen?
Was befindet sich jetzt in PyQt4 direkt drinnen, und was erst in PyQt4.Qt?
In der Dokumentation findet man nur, das das Modul jetzt QSql heißt, und nicht QtSql analog zu QtGui...
Das ist fast so verwirrend wie bei xlrd, wo man um einen Exeltimestamp umzuwandeln
xlrd.xldate_as_tuple() verwendet, und für den Schrit zurück xlrd.xldate.xldate_from_datetime_tuple() verwenden muss...
lg,
...
Aber warum bekomme ich QSql nicht, wenn ich from PyQt4 import *
eingebe, sondern muss das mit from PyQt4.Qt machen?
Was befindet sich jetzt in PyQt4 direkt drinnen, und was erst in PyQt4.Qt?
In der Dokumentation findet man nur, das das Modul jetzt QSql heißt, und nicht QtSql analog zu QtGui...
Das ist fast so verwirrend wie bei xlrd, wo man um einen Exeltimestamp umzuwandeln
xlrd.xldate_as_tuple() verwendet, und für den Schrit zurück xlrd.xldate.xldate_from_datetime_tuple() verwenden muss...
lg,
...
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Also ich sehe laut Doku, dass das Modul QtSQL heißt...
Zum Paket Qt:
http://www.riverbankcomputing.co.uk/sta ... components
Allerdings wäre es auch ziemlich unverständlich, wenn sich Riverbank da nicht an den Modulenamen des Original Qts orientiert hätte...
Zum Paket Qt:
Quelle:doku hat geschrieben: The Qt module. This module consolidates the classes contained in all of the modules described above into a single module. This has the advantage that you don't have to worry about which underlying module contains a particular class. It has the disadvantage that it loads the whole of the Qt framework, thereby increasing the memory footprint of an application. Whether you use this consolidated module, or the individual component modules is down to personal taste.
http://www.riverbankcomputing.co.uk/sta ... components
Allerdings wäre es auch ziemlich unverständlich, wenn sich Riverbank da nicht an den Modulenamen des Original Qts orientiert hätte...
@...
Du wirfst da einiges durcheinander. Das Datenbankmodul von Qt heißt sehr wohl QtSql, und das steht so auch in der Dokumentation (cih weiß ja nicht, was Du da gelesen hast). In diesem Modul aber gibt es einen Typen namens "QSql", der aber nur ein paar Konstanten definiert. Der vollständige Name von QSql lautet "PyQt4.QtSql.QSql".
Deswegen „bekommst“ Du "QSql" auch, wenn Du "from PyQt4.Qt import *" nutzt, nicht aber bei "from PyQt4 import *". "PyQt4.Qt" importiert alle Typen aus allen Qt-Modulen, so dass man sich nicht mehr um das richtige Modul kümmern muss. In "PyQt4.Qt" stehen alle Klassen, die in allen Modulen von Qt definiert sind. "from PyQt4.Qt import *" ist also identisch zu
"PyQt4.Qt.QMainWindow" und "PyQt4.QtGui.QMainWindow" beziehen sich somit auf dieselbe Klasse.
In "PyQt4" dagegen befinden sich alle Module, z.B "QtGui", "QtCore", "QtSql" und eben auch das „Supermodul“ "Qt". "from PyQt4 import *" funktioniert allerdings trotzdem nicht, da Module eines Pakets nicht zum Namensraum eines Pakets gehören.
Du wirfst da einiges durcheinander. Das Datenbankmodul von Qt heißt sehr wohl QtSql, und das steht so auch in der Dokumentation (cih weiß ja nicht, was Du da gelesen hast). In diesem Modul aber gibt es einen Typen namens "QSql", der aber nur ein paar Konstanten definiert. Der vollständige Name von QSql lautet "PyQt4.QtSql.QSql".
Deswegen „bekommst“ Du "QSql" auch, wenn Du "from PyQt4.Qt import *" nutzt, nicht aber bei "from PyQt4 import *". "PyQt4.Qt" importiert alle Typen aus allen Qt-Modulen, so dass man sich nicht mehr um das richtige Modul kümmern muss. In "PyQt4.Qt" stehen alle Klassen, die in allen Modulen von Qt definiert sind. "from PyQt4.Qt import *" ist also identisch zu
Code: Alles auswählen
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtSql import *
from PyQt4.QtNetwork import *
…
In "PyQt4" dagegen befinden sich alle Module, z.B "QtGui", "QtCore", "QtSql" und eben auch das „Supermodul“ "Qt". "from PyQt4 import *" funktioniert allerdings trotzdem nicht, da Module eines Pakets nicht zum Namensraum eines Pakets gehören.
Ah... vielen Dank!
Das hat mir jetzt endlich mal einen Durchblick durch die Struktur verschafft...
Und jetzt ist mir klar, warum es doch oft mit meinen einzelnen Imports nicht funktioniert hatte, sondern erst, wenn ich dann doch den Overkill einsetzte
lg,
...
Das hat mir jetzt endlich mal einen Durchblick durch die Struktur verschafft...
Und jetzt ist mir klar, warum es doch oft mit meinen einzelnen Imports nicht funktioniert hatte, sondern erst, wenn ich dann doch den Overkill einsetzte

lg,
...
Sorry,
das ich mich jetzt erst melde, ich war unterwegs. Vielen Dank für die Antworten.
Doch habe ich immer noch ein Problem. Ich habe auf der folgenden Seite das nachfolgende Beispiel gefunden:
http://www.commandprompt.com/community/pyqt/x3270
irgendwie erhalte ich aber immer eine Fehlermeldung. Was ist denn hier falsch
Viele Grüsse
mdgo88
das ich mich jetzt erst melde, ich war unterwegs. Vielen Dank für die Antworten.
Doch habe ich immer noch ein Problem. Ich habe auf der folgenden Seite das nachfolgende Beispiel gefunden:
http://www.commandprompt.com/community/pyqt/x3270
Code: Alles auswählen
#
# tree.py - a simple tree with QListView
#
import sys
from qt import *
class MainWindow(QMainWindow):
def __init__(self, *args):
apply(QMainWindow.__init__, (self,) + args)
self.tree = QListView(self)
self.setCentralWidget(self.tree)
self.tree.addColumn("item")
self.tree.setRootIsDecorated(1)
self.items=[]
self.items.append(QListViewItem(self.tree, "testself1"))
self.items.append(QListViewItem(self.items[-1], "child 1"))
self.items.append(QListViewItem(self.items[-2], "child 2"))
def main(args):
app=QApplication(args)
win=MainWindow()
win.show()
app.connect(app, SIGNAL("lastWindowClosed()"),
app, SLOT("quit()"))
app.exec_loop()
if __name__=="__main__":
main(sys.argv)
Viele Grüsse
mdgo88
-
- User
- Beiträge: 108
- Registriert: Sonntag 7. Februar 2010, 14:16
Hallo lunar! Wenn ich dich richtig verstehe arbeitet import, entgegen der Annahme vieler Benutzer, also nicht rekursiv.lunar hat geschrieben:"from PyQt4 import *" funktioniert allerdings trotzdem nicht, da Module eines Pakets nicht zum Namensraum eines Pakets gehören.
Sobald sich ein sogenanntes "Superpaket" in den mit * selektierten Paketen befindet, werden dessen "Unterpakete" nicht mit-importiert, oder?
So in etwa … ein "from paket import *" importiert nur die Namen, die in der "__init__.py" des Pakets vorhanden sind, nicht aber alle "*.py"s im Paketverzeichnis.
Hmm was ich nicht versteh ist du möchtest doch einen TreeView machen oder ?
hier machst Du aber was anderes.def __init__(self, *args):
apply(QMainWindow.__init__, (self,) + args)
self.tree = QListView(self)
Fehlermeldungen können langes Suchen ersparen ( wenn man sie kennt ..... ).irgendwie erhalte ich aber immer eine Fehlermeldung. Was ist denn hier falsch
Viele Grüsse
mdgo88
Deine Anleitung ist echt alt. Also wirklich alt ...
Vergiss sie ....
Vergiss sie ....
A note on versions: when I wrote this book I mostly used the stable 2.x versions of Qt, but as soon as betas of Qt 3.x became available, I started integrating information about its improvements in the text. I will note wherever one version is different from the other. On the Opendocs webforum for this book you'll find versions of the examples both for Qt 2.x and Qt 3.x.