Notizdeskv 0.1 ist da!
Verfasst: Mittwoch 6. Juli 2011, 20:46
Hi
Habe ein Python Prog. geschrieben genaueres seht ihr hier
Habe ein Python Prog. geschrieben genaueres seht ihr hier
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
class NoticeData(object):
def __init__(self, info, text=""):
self.info = info
self.text = text
self.x = 0
self.y = 0
# Größe in Zeilen und Spalten
self.width = 80
self.height = 25
self.alpha = 0.7
self.hide = True
Code: Alles auswählen
def set_position(toplevel, x, y):
toplevel.geometry("+{0}+{1}".format(x, y))
def set_size(toplevel, width, height):
toplevel.geometry("{0}x{1}".format(width, height))
def set_geometry(toplevel, x, y, width, height):
toplevel.geometry("{0}x{1}+{2}+{3}".format(width, height, x, y))
def get_position(toplevel):
geometry = toplevel.geometry()
_, x, y = geometry.split("+")
return int(x), int(y)
Code: Alles auswählen
class NoticeWidget(tk.Toplevel):
def __init__(self, master, data, cnf={}, **kwargs):
tk.Toplevel.__init__(self, master, cnf, **kwargs)
self.overrideredirect(True)
set_position(self, data.x, data.y)
self.attributes("-alpha", data.alpha)
self.notice = Notice(self, data)
self.notice.pack(fill="both", side="right")
self.menu = Menu(self, self.notice)
self.menu.pack(expand=True, fill="y", side="left")
Code: Alles auswählen
class Notice(tk.Text):
def __init__(self, master, data, cnf={}, **kwargs):
cnf.update({"width":data.width, "height":data.height})
tk.Text.__init__(self, master, cnf, **kwargs)
self.data = data
self.update()
def update(self):
self.config(state="normal")
self.delete("0.0", "end")
self.insert("0.0", self.data.text)
self.config(state="disabled")
Code: Alles auswählen
|-|--------------------|
|X| Notiz |
|Y| Notiz |
|Z| Notiz |
|-|--------------------|
Code: Alles auswählen
class Gripper(tk.Label):
GRID_SIZE = GRID_X, GRID_Y = 10, 10
def __init__(self, master, toplevel=None, cnf={}, **kwargs):
tk.Label.__init__(self, master, cnf, **kwargs)
self.toplevel = toplevel if toplevel else master
self.bind("<B1-Motion>", self._drag)
def _drag(self, event):
x, y = self.align(event.x_root, event.y_root)
set_position(self.toplevel, x, y)
def align(self, x, y):
return x - (x % self.GRID_X), y - (y % self.GRID_Y)
Code: Alles auswählen
class Config(tk.Toplevel):
def __init__(self, noticedata, cnf={}, **kwargs):
tk.Toplevel.__init__(self, cnf, **kwargs)
self.noticedata = noticedata
lb = tk.Label(self)
lb.config(text="Dies durch dein Konfigurations-Fenster ersetzen.")
lb.pack()
Code: Alles auswählen
class Menu(tk.Frame):
def __init__(self, master, notice, cnf={}, **kwargs):
tk.Frame.__init__(self, master, cnf, **kwargs)
self.notice = notice
self._hide = False
look = {"relief":"flat"}
self.gripper = Gripper(self, master, look, text=u"✥")
self.gripper.pack(expand=True, fill="both")
cmd = partial(Config, notice.data)
self.config = tk.Button(self, look, text="⚒", command=cmd)
self.config.pack(expand=True, fill="both")
self.hide = tk.Button(self, look, text="✗", command=self._switch)
self.hide.pack(expand=True, fill="both")
if notice.data.hide:
self._switch()
Code: Alles auswählen
def _switch(self):
self.show_notice() if self._hide else self.hide_notice()
def show_notice(self):
self._hide = False
self.notice.pack()
self.hide.config(text="✗")
def hide_notice(self):
self._hide = True
self.notice.pack_forget()
self.hide.config(text="⇒")
Code: Alles auswählen
def fold_up(self, x):
if x >= self.STEPS:
self.after(self.DELAY, self.fold_up, x - self.STEPS)
self.notice.config(width=x)
else:
self.notice.pack_forget()
self._grab = False
def fold_out(self, x):
if x <= self._width:
self.after(self.DELAY, self.fold_out, x + self.STEPS)
self.notice.config(width=x)
else:
self._grab = False
def show_notice(self):
if self._grab:
return
self._grab = True
self._hide = False
self.notice.pack()
self.fold_out(0)
self.hide.config(text="✗")
def hide_notice(self):
if self._grab:
return
self._grab = True
self._hide = True
self._width = self.notice.cget("width")
self.fold_up(self._width)
self.hide.config(text="⇒")
Code: Alles auswählen
if __name__ == "__main__":
loremipsum = 2*"""Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
amet."""
root = tk.Tk()
root.overrideredirect(True)
close = tk.Button(root, text="Schließen", command=root.destroy)
close.pack(side="right")
notice1 = NoticeData("Lorem ipsum", loremipsum)
notice1.x = 200
notice1.y = 200
notice1.height = 5
notice1.hide = False
nw1 = NoticeWidget(root, notice1)
root.mainloop()
Ich frage mich, wo du diese Hoffnung her nimmst. Ich kann mich an kein Posting von ihm erinnern (zugegeben, ich habe sie nicht alle gelesen - das ertrage ich einfach nicht), das auch nur einen kleinen Anlass zur Hoffnung gab, dass sich an seinem Verhalten hier im Forum irgendetwas ändern wird.Xynon1 hat geschrieben:... und ich hoffe du wirst dich endlich mal am Riemen reißen und zumindest ordentlich formulierte Fragen stellen, in welchen man nicht rätseln muss was du eventuell meinen könntest.