StringVar ändern???

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.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

StringVar ändern???

Beitragvon Andyh » Sonntag 13. Juli 2008, 12:00

Hallo

Da denkt man man kennt sich so langem aus und dann sowas:

Ich will ein Programm schreiben was unser Netzwerk überwacht.
Die GUI ist schon fertigt, sie wurde mit einen GUIBuilder gemacht. In der
Gui müssen jetzt aber die texte von den Labels und den Buttons veränderbar sein, ist ja kein Problem der GuiBuilder kann das ja schon.
Jetzt muss ich sie aber auch setzten können.
frage wie?

Code:
http://paste.pocoo.org/show/79318/

Ich weiss schon wie man eine StringVar ändert (.set("Hallo")), nur nicht wo ich es einsetzten kann.

Es muss ein eine Funktion rein die in der Klasse Hofmannnetz ist, nur

Code: Alles auswählen

def stringvaraendern(text):
    h = Hofmannnetz()
    h.pcb1.set(text)


das geht nicht genau so wenigt wie:

Code: Alles auswählen

def stringvaraendern(text):
    pcb1.set(text)


Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!

Code: Alles auswählen

import sys

if sys.platform == "win32":
    print "this program only runs on operating systems!!!"
    sys.TotalError()
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Beitragvon HWK » Sonntag 13. Juli 2008, 14:22

Deine Klasse ist ja sehr ungewöhnlich aufgebaut:
Keine __init__-Methode, alles als Klassenattribute etc. Soll das wirklich so sein?
Dadurch entsteht auch Dein Problem. Du hast jetzt nicht so ohne weiteres Zugriff auf die Attribute. Pack die Initialisierungen doch in eine Init-Methode, ändere die Klassen- in Instanz-Attribute z.B.

Code: Alles auswählen

    def __init__(self, root):
        ...
        self.pcb1 = Tkinter.StringVar(root)
        ...
definiere in der Klasse eine Methode z.B.

Code: Alles auswählen

def change_pcb1(self, text):
    self.pcb1.set(text)
und instanziere die Klasse auf Modulebene (h = Hoffman(root)). Dann sollte h.change_pcb1('Dein Text') funktionieren.
root = Tk() sollte meines Erachtens nicht in die Klasse, sondern z.B. auch auf die Modulebene und root als Parameter an die Klasse übergeben werden.
Auch der doppelte Import

Code: Alles auswählen

import Tkinter
from Tkinter import *
ist so nicht sinnvoll.
MfG
HWK
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Beitragvon Andyh » Montag 14. Juli 2008, 19:34

Hallo

Danke für die Tipps

Gruß
Andyh
Meinen Dickschädel schon bemerkt?

Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!

Code: Alles auswählen

import sys

if sys.platform == "win32":
    print "this program only runs on operating systems!!!"
    sys.TotalError()

Wer ist online?

Mitglieder in diesem Forum: r.barrios