Seite 1 von 1

Komisches label Problem

Verfasst: Donnerstag 8. Januar 2009, 16:27
von gugugs
Wenn ich diese Funktion:

Code: Alles auswählen

	def proof(self, proof, layer, number):
		if proof!=".dvd" or layer!="LayerBreak" or number!="1913760":
			self.windowdialog=self.xml.get_widget("dialog1")

			if number!="1913760":
				sendlabel="Fehlerhafter LayerBreak"
			if layer!="LayerBreak":
				sendlabel="Dies ist keine gueltige .dvd Datei"
			if proof!=".dvd":
				sendlabel="Dies ist keine .dvd Datei"

			self.labelnow=""
			self.labelnow=self.xml.get_widget("label")
			self.labelnow.set_text(sendlabel)

			self.windowdialog.show_all()

das zweite mal ausführe, dann bekomme ich den Fehler:

AttributeError: 'NoneType' object has no attribute 'set_text'

Verfasst: Donnerstag 8. Januar 2009, 16:38
von Darii
Dann wird wohl ``self.xml.get_widget("label")`` beim 2. Mal ``None`` zurückgeben. Ohne weitere Informationen was self.xml eigentlich ist kann und will ich dir nicht helfen.

Verfasst: Donnerstag 8. Januar 2009, 16:47
von gugugs
self.xml ist einfach nur die .glade datei, ich habe mein gui mit glade programmiert, und da ist eine label, namens label
deshalb:

Code: Alles auswählen

self.labelnow=self.xml.get_widget("label")
meine __init__funktion:

Code: Alles auswählen

	def __init__(self):
		self.xml = gtk.glade.XML(os.path.join(os.path.dirname(sys.argv[0]), 'x360burn-0.0.2.glade'))
		self.window = self.xml.get_widget('window1')

		dic = {}
		for key in dir(self.__class__):
			dic[key] = getattr(self,key)
		self.xml.signal_autoconnect(dic)


		self.window.show()
und mit dem

Code: Alles auswählen

          self.labelnow=self.xml.get_widget("label")
          self.labelnow.set_text(sendlabel)
will ich eig. einfach nur das label umändern also den inhalt des labels und wie gesagt, beim ersten mal klappt das ja auch[/code]

Verfasst: Donnerstag 8. Januar 2009, 19:13
von Trundle
`get_widget()` liefert immer das selbe Widget und erstellt kein neues. Und dein Label wird eben irgendwo im Laufe des Programms zerstört, beispielsweise wenn der Dialog zerstört wird. Das Label existiert also nicht mehr und `get_widget()` gibt das ordnungsgemäß zurück.

Verfasst: Donnerstag 8. Januar 2009, 22:02
von gugugs
Ah ok, vielen Dank, das habe ich verstanden