Nochmal externe Variablen, diesmal mit QProcess

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

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 (
http://python.sandtner.org/viewtopic.ph ... 067f8b5ee3
).
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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

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]#!/usr/bin/env python
import this[/code]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
max2

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
Antworten