Kann sein, dass das mit dem Thread unter Windows nicht klappt. Bei mir unter Ubuntu tut es. Daher habe ich es anderes implementiert. Allerdings hatte ich gemerkt, dass ich bei spazieren.py den Toplevel vergessen hatte: Bitte noch hinzufügen zu spazieren.py:Sirius3 hat geschrieben:@Alfons Mittelmeyer: leider tut Dein Spaziergang bei mir nicht:Ich gehe mal davon aus, dass es daran liegt, dass Du versuchst, von einem Thread aus auf die GUI zuzugreifen.Code: Alles auswählen
> ls() => \. Frame > Tcl_WaitForEvent: Notifier not initialized Abort trap: 6
Code: Alles auswählen
class Toplevel(GuiElement,StatTkInter.Toplevel):
def __init__(self,myname="Toplevel",**kwargs):
_initGuiElement(kwargs,StatTkInter.Toplevel,self,myname,"Toplevel",True)
Code: Alles auswählen
from spazieren import *
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
self.button = Button(frame,
text="QUIT", fg="red",
command=frame.quit)
self.button.pack(side=LEFT)
self.slogan = Button(frame,
text="Hello",
command=self.write_slogan)
self.slogan.pack(side=LEFT)
def write_slogan(self):
print("Tkinter is easy to use!")
root = Tk()
app = App(root)
import GuiWalk
root.mainloop()
Code: Alles auswählen
from spazieren import *
goApp()
Toplevel()
goIn()
this().title('GuiWalk')
Entry('Entry')
Label('Label',text="""Your Input:""")
widget('Label').pack(side='left')
widget('Entry').pack(side='left')
### Code ======================================
def function(entry):
try: eval(compile(entry.get(),'<string>','exec'))
except:pass
entry.delete(0,END)
ls()
widget('Entry').bind('<Return>',lambda event, entry=widget('Entry'), func=function: func(entry))
del function
### ===========================================
goApp()
ls()
PS: natürlich kann man solche Befehle wie hier auch eingeben, während das Programm läuft - bei entsprechender Eingabemöglichkeit oder Dazuimport.