[PyQt] Vokabeltrainer schreiben

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
vorlautboy
User
Beiträge: 38
Registriert: Sonntag 7. Dezember 2008, 18:43

[PyQt] Vokabeltrainer schreiben

Beitragvon vorlautboy » Sonntag 7. Dezember 2008, 19:03

Servus leute,

ich versuche gerade mithilfe des gui-frameworks qt einen vokabeltrainer zu schreiben. ich habe jetzt folgende probleme:

(1) wenn man das programm startet soll zuerst eine eingabemaske für verschiedene optionen erscheinen (zb. lektion etc.), nachdem diese ausgefüllt und bestätigt wurde, soll das eigentliche programm im selben widget (QFrame) beginnen.
die eingabemaske für die optionen hat aber total andere widgets und ein anderes layout als das eigentliche programm; wie macht man jetzt den übergang von der eingabemaske zum eigentliche programm? gibt es in qt nicht etwas panel-ähnliches das man als parents für die widgets verwendet und nach der eingabe der optionen einfach ausblenden kann?

(2) die vokabeln stehen in einer .csv datei und werden innerhalb des programms in einer qsqldatabase verwaltet. wie kann man die datenbank am besten auf der festplatte sichern, damit die datenbank direkt geladen werden kann?

vielen dank für eure antworten schonmal im voraus! :)
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Beitragvon derdon » Sonntag 7. Dezember 2008, 19:11

Moin vorlautboy,

vielleicht hilft es dir weiter, wenn du dir den Quellcode von V-Trainr anguckst.
lunar

Re: [PyQt] Vokabeltrainer schreiben

Beitragvon lunar » Sonntag 7. Dezember 2008, 19:34

vorlautboy hat geschrieben:(1) wenn man das programm startet soll zuerst eine eingabemaske für verschiedene optionen erscheinen (zb. lektion etc.), nachdem diese ausgefüllt und bestätigt wurde, soll das eigentliche programm im selben widget (QFrame) beginnen.
die eingabemaske für die optionen hat aber total andere widgets und ein anderes layout als das eigentliche programm; wie macht man jetzt den übergang von der eingabemaske zum eigentliche programm? gibt es in qt nicht etwas panel-ähnliches das man als parents für die widgets verwendet und nach der eingabe der optionen einfach ausblenden kann?

Dafür gibt es z.B. "QtGui.QStackedLayout". Allerdings ist das nicht unbedingt im Sinne der Usability, besser wäre imho die Anzeige eines Dialogs.

(2) die vokabeln stehen in einer .csv datei und werden innerhalb des programms in einer qsqldatabase verwaltet. wie kann man die datenbank am besten auf der festplatte sichern, damit die datenbank direkt geladen werden kann?

Der Sinn erschließt sich mir nicht? Willst du nun CSV-Dateien laden, oder eine echte SQL-Datenbank?
vorlautboy
User
Beiträge: 38
Registriert: Sonntag 7. Dezember 2008, 18:43

Re: [PyQt] Vokabeltrainer schreiben

Beitragvon vorlautboy » Sonntag 7. Dezember 2008, 20:24

(2) die vokabeln stehen in einer .csv datei und werden innerhalb des programms in einer qsqldatabase verwaltet. wie kann man die datenbank am besten auf der festplatte sichern, damit die datenbank direkt geladen werden kann?

Der Sinn erschließt sich mir nicht? Willst du nun CSV-Dateien laden, oder eine echte SQL-Datenbank?
momentan ist die datenbank noch in der csv datei, beim nächsten mal laden soll sie aber als sql datenbank gespeichert und danach dauerhaft auch so geladen werden; ich kann nur keine funktion finden, die die datenbank so auf die platte schreibt, dass sie sich später auch wieder problemlos mit qtsql laden lässt.
lunar

Beitragvon lunar » Sonntag 7. Dezember 2008, 21:10

http://doc.trolltech.com/4.4/qtsql.html <- Dafür gibt es das QtSql Modul
vorlautboy
User
Beiträge: 38
Registriert: Sonntag 7. Dezember 2008, 18:43

Beitragvon vorlautboy » Sonntag 7. Dezember 2008, 21:16

lunar hat geschrieben:http://doc.trolltech.com/4.4/qtsql.html <- Dafür gibt es das QtSql Modul
ja aber welche methode wird zum schreiben auf die platte verwendet oder muss man das selbst machen?
lunar

Beitragvon lunar » Sonntag 7. Dezember 2008, 21:33

Es ist nicht die Aufgabe des Programms, die Daten persistent zu speichern. Genau dafür ist die Datenbank ja da. Das DBMS garantiert, dass abgeschlossene Transaktionen persistent sind.

Wenn du – wie ich vermute – nur eine einzige Datei nutzen möchtest, dann kannst du als Datenbanktreiber SQLite nutzen. Dadurch wird eine einzige Datei gespeichert. Bei vollwertigen DBMS wie MySQL oder Postgre dagegen ist der Datenbankserver für die Speicherung zuständig.

Ich denke, du solltest dir erstmal Grundlagen über Datenbanken aneignen, da dir diese offenbar fehlen.

Falls du ein Beispiel benötigst: Aufbau der Datenbankverbindung und das dazugehörige Model.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder