Besteht eine Möglichkeit die Farbe zu ändern oder ersetzen ???
try:
self["info"].setText(_(foregroundColor="# Color1 " + ausgabe))
except:
self["info"].setText(_(foregroundColor="# Color2 " + ausgabe))
Besteht eine Möglichkeit die Farbe zu ändern oder ersetzen ???
try:
self["info"].setText(_(foregroundColor="# Color1 " + ausgabe))
except:
self["info"].setText(_(foregroundColor="# Color2 " + ausgabe))
farbe aendern geht etwa so:
self["info"].instance.setForegroundColor(....)
setText() setzt den Text und nichts anderes. Bei einem Label kann man die Farbe nicht ändern.
Edit: alpha hat natürlich Recht
Hallo wieder ich,
ich habe nie einen Fehler Funktion mit Farbe wechseln gebaut .
Wenn ich per Taste aufrufe geht es,
aber automatisch aufrufen geht es nicht.
if test == 0:
self.OK()
else:
self.erro()
def erro(self):
self["info"].setText(_("INFO"))
#self["info"].instance.setForegroundColor(self.colorRed)
wie ist denn die fehlermeldung?
self["info"].instance.setForegroundColor(self.colorRed)
AttributeError: 'NoneType' object has no attribute 'setForegroundColor'
swig director exception (SWIG director method error.)
irgendwie habe ich keine Rechte,
bei aufrufen.
Erst nach dem Start darf ich ändern
anscheinend ist self["info"] nicht in der class definiert, in der du die farbe aendern willst.
self["info"] = Label(_("info") so habe ich definiert.
nach dem Start Plugin
per Fernbedienung kann ich die Farbe ändern.
automatisch bei aufrufen funktioniert es nicht
da musst du mal schauen, wo der unterschied im code zwischen automatischem aufruf und aufruf mit fernbedienung ist.
Ich frage mich schon, warum du nicht einfach den Code hier posten kannst. So bin ich geneigt zu sagen: hilf dir doch selbst
class test(Screen):
skin = """
<screen position="center,center" size="850,550" title="%s" >
<widget name="text" position="20,20" size="810,370" valign="center" foregroundColor="#ffffff" font="Regular;30" halign="center" transparent="1" />
<widget name="info" position="50,400" size="800,50" valign="center" foregroundColor="#ffffff" font="Regular;30" halign="center" transparent="1" />
</screen>"""% _(VERSION)
#
def __init__(self, session, args=None):
Screen.__init__(self, session)
self.session = session
self.urls = ['google.de', 'test.org']
self.colorGreen = parseColor("#00e100")
self.colorRed = parseColor("#FF0000")
self.colorBlue = parseColor("#0000FF")
self.colorBlack = parseColor("#000000")
self.colorWhite = parseColor("#FFFFFF")
self.colorYellow = parseColor("#FFFF00")
self.t = str(time.strftime("%Y%m%d%H%M"))
self.file_log = '/tmp/' + self.t + '.txt'
self["info"] = Label(_("info"))
self["text"] = Label(_("Please wait... \ndowenload"))
self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
{
"ok": self.url_test,
"green": self.run,
"back": self.close,
"cancel": self.close,
"red": self.close,
}, -1)
def url(self):
for url in self.urls:
try:
res = urllib2.urlopen("http://"+url)
code = res.getcode()
if code == 200:
print url
return url
else:
self["text"].setText(_("no url"))
self["text"].instance.setForegroundColor(self.colorRed)
except:
self["text"].setText(_("error url"))
self["text"].instance.setForegroundColor(self.colorRed)
return " "
def url_test(self):
url = self.url()
self["text"].setText(url)
self["text"].instance.setForegroundColor(self.colorRed)
Alles anzeigen
Im Code sehe ich keinen Teil für das Setzen der Farbe für self["info"] ??
Den obigen Fehler bekommt man, wenn man setForegroundColor im __init__ ausführt.
Das geht aber nur, wenn der Screen bereits generiert wurde.
Ich mache das dann immer im LayoutFinish mit self.LayoutFinish.append(self.myFuncname)
Und in der def myFuncname wird dann die Farbe geändert.
Edit:
Hab das mal in deinem Code ergänzt:
class test(Screen):
skin = """
<screen position="center,center" size="850,550" title="%s" >
<widget name="text" position="20,20" size="810,370" valign="center" foregroundColor="#ffffff" font="Regular;30" halign="center" transparent="1" />
<widget name="info" position="50,400" size="800,50" valign="center" foregroundColor="#ffffff" font="Regular;30" halign="center" transparent="1" />
</screen>"""% _(VERSION)
#
def __init__(self, session, args=None):
Screen.__init__(self, session)
self.session = session
self.urls = ['google.de', 'test.org']
self.colorGreen = parseColor("#00e100")
self.colorRed = parseColor("#FF0000")
self.colorBlue = parseColor("#0000FF")
self.colorBlack = parseColor("#000000")
self.colorWhite = parseColor("#FFFFFF")
self.colorYellow = parseColor("#FFFF00")
self.t = str(time.strftime("%Y%m%d%H%M"))
self.file_log = '/tmp/' + self.t + '.txt'
self["info"] = Label(_("info"))
self["text"] = Label(_("Please wait... \ndowenload"))
self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
{
"ok": self.url_test,
"green": self.run,
"back": self.close,
"cancel": self.close,
"red": self.close,
}, -1)
self.onLayoutFinish.append(self.setInfoColor)
def setInfoColor(self):
self["info"].instance.setForegroundColor(self.colorRed)
def url(self):
for url in self.urls:
try:
res = urllib2.urlopen("http://"+url)
code = res.getcode()
if code == 200:
print url
return url
else:
self["text"].setText(_("no url"))
self["text"].instance.setForegroundColor(self.colorRed)
except:
self["text"].setText(_("error url"))
self["text"].instance.setForegroundColor(self.colorRed)
return " "
def url_test(self):
url = self.url()
self["text"].setText(url)
self["text"].instance.setForegroundColor(self.colorRed)
Alles anzeigen
beim starten des plugins wird die function url nicht aufgerufen.
self.onLayoutFinish.append(self.url)
am ende der ___init___ hinzufuegen, und schon muesste es funktionieren.