Variablen in module schicken

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Ich hoffe ich störe mit diesen einfachen Fragen nicht.

Also ich habe mit dem Qt Desiger eine Oberfläche erstellt und lade diese so:

Code: Alles auswählen

import sys
from PyQt4 import QtGui
from anzeige import Ui_Dialog as Dlg

global Xpos
global Ypos
global Zpos

Xpos = 0
Ypos = 0
Zpos = 0

class MeinDialog(QtGui.QDialog, Dlg):
    def __init__(self):
        QtGui.QDialog.__init__(self)
        self.setupUi(self)
        
        #Slots Einrichten
        self.connect(self.X0, QtCore.SIGNAL("clicked()"), self.X0)
        self.connect(self.Y0, QtCore.SIGNAL("clicked()"), self.Y0)
        self.connect(self.Z0, QtCore.SIGNAL("clicked()"), self.Z0)
        
app = QtGui.QApplication(sys.argv)
dialog = MeinDialog()
dialog.show()
sys.exit(app.exec_()) 
In der GUI habe ich drei Labels die die Variablen Xpos, Ypos und Zpos Anzeigen sollen. Nur es kommt der fehler:

NameError: global name 'Xpos' is not defined

Was muss ich machen damit ich die Variablen dort hinbekomme?

Gruß
Andyh der endlich ein Python Buch hat
BlackJack

Ich würde sagen gar nichts, Du solltest sie nicht "dort hin" bekommen wollen. ``global`` auf Modulebene hat keinen Effekt, die Zeilen kannst Du Dir sparen.

Das sollten Attribute des Dialogs sein. Muss der Dialog von `QtGui.QDialog` erben? Ich hätte erwartet, das `Dlg` das schon tut!? Dessen `__init__()` Du übrigens nicht aufrufst.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Also wenn ich sie dort nicht hinbekommen will, was ich aber will, wie mache ich es dann. Ich denke die Lösung ist das:
Das sollten Attribute des Dialogs sein. Muss der Dialog von `QtGui.QDialog` erben? Ich hätte erwartet, das `Dlg` das schon tut!? Dessen `__init__()` Du übrigens nicht aufrufst.
Nur ihrgendwie komme ich da nicht mit.

Gruß
Andyh
BlackJack

Die Labels müsstest Du in der `MeinDialog`-Klasse mit den entsprechenden Werten versorgen. Wo bekommst Du eigentlich den `NameError`? Hast Du etwa Quelltext in das generierte Modul geschrieben?
Gnushi
User
Beiträge: 77
Registriert: Dienstag 12. Dezember 2006, 09:49

Vorschlag:
Du definierst die Variablen Xpos, Ypos und Zpos innerhalb der Klasse.
Anschließend setzt du mit z. B.

Code: Alles auswählen

labelZ.setNum(Zpos)
die Werte im Label. Das machst du am besten im Konstruktor oder dort, wo sie sich ändern. Dann kannst du dir die Änderung am Ui-File sparen.
Siehe:
http://www.riverbankcomputing.com/Docs/ ... l#setNum-2
Hoffe das hilft.

GnuShi
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Jetzt habe ich es verstanden und es geht tadellos.

Danke

Gruß
Andyh
Antworten