ich habe hier grad einen mudclient, lyntin naemlich, und darin passiert folgendes:
es gibt eine class Tkui, darin zwei functions, settitle und colorcheck. Das sind beides ziemlich simple geschichten, settitle benutzt Tkinter.Tk.title, colorcheck benutzt Tkinter.Text.
ausserdem hat diese class Tkui eine __init__, die settitle aufruft, und ausserhalb der class gibt es eine function, die colorcheck aufruft.
soweit so gut, das __init__ klappt prima, die sache mit colorcheck auch. Bloss, sobald ich eine function schreibe die von aussen auf settitle zugreift, stuerzt das ganze ab.
Also ich glaube nicht das ich da was falsch mache, ich rufe settitle genauso auf wie auch colorcheck das colorcheck...
naja, hier ist das ganze mal in detail:
Code: Alles auswählen
class Tkui(ui.BaseUI):
def __init__(self):
self._tk = Tkinter.Tk()
self.settitle()
...
def settitle(self, title = ''):
"""
Sets the title bar.
@param title: the title to set
@type title: string
"""
if title:
self._tk.title(DEFAULTTITLE + title)
else:
self._tk.title(DEFAULTTITLE)
def colorCheck(self):
fgkeys = ['30','31','32','33','34','35','36','37']
bgkeys = ['40','41','42','43','44','45','46','47']
self._txt.insert('end', 'color check:\n')
for bg in bgkeys:
for fg in fgkeys:
self._txt.insert('end', str(fg), (fg, bg))
self._txt.insert('end', str("b" + fg), ("b" + fg, bg))
self._txt.insert('end', '\n')
for fg in fgkeys:
self._txt.insert('end', str(fg), (fg, "b" + bg))
self._txt.insert('end', str("b" + fg), ("b" + fg, "b" + bg))
self._txt.insert('end', '\n')
self._txt.insert('end', '\n')
self._txt.insert('end', '\n')
Dann ausserhalb der class:
Code: Alles auswählen
def colorcheck_cmd(ses, args, input):
"""
Prints out all the colors so you can verify that things are working
properly.
"""
myengine = exported.get_engine()
myengine._ui_lock.acquire(1)
try:
myengine._ui.colorCheck()
finally:
myengine._ui_lock.release()
Was abstuerzt ist folgendes:
Code: Alles auswählen
def settitle_cmd(ses, args, input):
"""
crashes...
"""
myengine = exported.get_engine()
myengine._ui_lock.acquire(1)
try:
myengine._ui.settitle()
finally:
myengine._ui_lock.release()
Kann sich darauf jemand einen Reim machen? Woran koennte es liegen? Jemand sagte mir schon
das dasselbe unter Linux funktioniert (achja, bei mir laeuft das unter win XP, mit
python 2.2.2)
joergo