Nochmal externe Variablen, diesmal mit QProcess

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
max2

Nochmal externe Variablen, diesmal mit QProcess

Beitragvon max2 » Mittwoch 8. Dezember 2004, 16:51

Hallo,

wenn ich globale Variablen auch in Unterfenstern bearbeiten möchte, funktioniert der Import eines Moduls, welches die Variable initialisiert, ohne Probleme: alle können den Wert der Variable modifizieren ([url=http://python.sandtner.org/viewtopic.php?t=2311&sid=14d70be913d6c95655ac02067f8b5ee3]
http://python.sandtner.org/viewtopic.ph ... 067f8b5ee3[/url]).
Aber: Wenn ich mit QProcess ein neues Script (ohne Klassen, nur Funktionen) starte und das besagte Modul importiere, bekomme ich den Initialisierungswert der Variable und nicht - wie ich es natürlich möchte - den mittlerweile modifizierten Wert. Wie macht man das? Klar, man könnte den Wert in eine Datei schreiben und diese als Argument beim Start des Scripts übergeben, aber es muss doch auch einfacher gehen. Danke im voraus.
max

EDIT mawe: hab mal den Link zum Link gemacht
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 8. Dezember 2004, 17:47

Musst du nicht auf das global einmal importierte Modul zugreifen und nicht auf eine neue Instanz des Moduls? Du kannst nämlich in jedem Namespace das Modul importieren, dadurch bekommst du eben die initialen Werte.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Mittwoch 8. Dezember 2004, 19:17

Hi,

nö musst du nicht, Module werden pro Interpreterinstanz nur beim ersten import initialisiert, bei jedem weiteren Import, in der selben Interpreterinstanz, wird nur ein Zeiger auf das bereits initialisierte Modul zurückgegeben.

Ich kenne QProcess nicht, aber es scheint für jeden Prozess eine neue Interpreterinstanz zu bilden. Daher wird jedesmal ein neues Modulobjekt erzeugt und initialisiert. Ich denke, du wirst um eine Datei in die du die Werte schreibst und aus der du sie bei Bedarf wieder einliest nicht rumkommen.

Such mal bei den Codesnippets nach file_to_dict.


Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 8. Dezember 2004, 19:42

Dookie hat geschrieben:nö musst du nicht, Module werden pro Interpreterinstanz nur beim ersten import initialisiert, bei jedem weiteren Import, in der selben Interpreterinstanz, wird nur ein Zeiger auf das bereits initialisierte Modul zurückgegeben.

Ach so! Das spart Resourcen, aber logisch finde ich das nicht.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
max2

Schade

Beitragvon max2 » Mittwoch 8. Dezember 2004, 23:25

Das mit der neuen Interpreterinstanz scheint Sinn zu machen, immerhin startet QProcess alles mögliche solange man es als "arg0" + "arg1" + ... formulieren kann. In meinem Fall ist es eben "python" + "-u" + "<scriptname>" + "<arg>" um eine ungepufferte Ausgabe in ein QTextEdit zu kriegen.
Danke an Euch beide für die Tipps, cooles Board.
Grüße
max

@mawe: keine Sorge, ich lerne es noch

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder