Ein weiteres aber kleines Problem ist, dass die animation der Fenster stehen bleibt, sobald man während der Animation ein zweites Fenster öffnet, da das öffnen der Fenster später aber automatisch ablaufen soll, sobald das Programm Daten abruft (durch den Thread) ist das nicht so schlimm, ein Tipp wäre hier aber auch schön

ganz oben muss die Auflösung eingetragen sein, sonst seht ihr das evtl nicht. Kann man garantiert automatisch machen aber ich wollte jetzt erstmal das Problem lösen bevor ich mich an andere Sachen mach^^
Code: Alles auswählen
WINDOWWIDTH = 1680
WINDOWHEIGHT = 1050
FRAMEWIDTH = 200
FRAMEHEIGHT = 60
from Tkinter import Tk, Button, Frame, Label, Toplevel
from time import sleep
from threading import Thread
#import thread
class Notify():
def __init__(self, author, text):
self.author = author
self.text = text
self.posx = WINDOWWIDTH-FRAMEWIDTH
self.posy = WINDOWHEIGHT-FRAMEHEIGHT+130
self.wantedpos = WINDOWHEIGHT-FRAMEHEIGHT
self.root = Toplevel()
self.root.overrideredirect(1)
self.root.geometry("+"+str(self.posx)+"+"+str(self.posy))
self.frame = Frame(self.root, width=FRAMEWIDTH, height=FRAMEHEIGHT,
borderwidth=5, relief="raised")
self.frame.pack_propagate(False)
self.frame.pack()
self.label = Label(self.frame, text = self.author + "\n" + self.text)
self.label.pack(side="left", anchor = "nw")
self.root.update()
self.moveup()
#self.root.mainloop()
def moveup(self):
self.wantedpos -= notifier.getwindows() * FRAMEHEIGHT + 30
while self.posy > self.wantedpos:
self.root.geometry("+"+str(self.posx)+"+"+str(self.posy))
self.root.update()
self.posy -=3
sleep(0.01)
self.root.bind("<Button-1>",self.movedown)
def movedown(self, event=None):
self.root.unbind("<Button-1>")
while self.posy < (WINDOWHEIGHT+FRAMEHEIGHT):
self.posy +=3
self.root.geometry("+"+str(self.posx)+"+"+str(self.posy))
self.root.update()
sleep(0.01)
notifier.decreasewindows()
self.root.destroy()
class Creater(Thread):
def run(self):
while 1:
sleep(3)
print 1
#-------------------- Problem: -----------------
notifier.startnotify("Hobbybash0r", "blabala")
#button.config(text="3") # verändern von einträgen geht
print 2
class Notifier:
def __init__(self):
self.notifierlist = []
self.windows = 0
def getwindows(self):
return self.windows
def decreasewindows(self):
self.windows -= 1
def startnotify(self, author, text):
self.notifierlist.append(Notify(author, text))
self.windows +=1
notifier = Notifier()
main = Tk()
button = Button(main, text="1", command=lambda:notifier.startnotify("Hobbybash0r", "blabala"))
button.pack(fill="x")
button2 = Button(main, text="2", command=lambda:notifier.startnotify("Hobbybash0r", "blubebe"))
button2.pack(fill="x")
creater = Creater().start()
main.mainloop()