Code: Alles auswählen
#!/usr/local/bin/python
# File: About.py
# Ausgabe einer About-Dialogbox mit verschiedenen Optionen
# Geschrieben von Hans-Werner Krause, 03/2006 in Python
# msg = Text
# title = Titel der Dialogbox
# image = Bild als String, JPG- oder GIF-Datei
from Tkinter import *
import tkSimpleDialog
class AboutDialog(tkSimpleDialog.Dialog):
def __init__(self, master, msg, title=None, image=None):
self.msg=msg
self.im=None
if image:
try:
if image.lower().endswith('.gif'):
self.im=PhotoImage(file=image)
elif image.startswith('R0lGOD'): # GIF89 Base64-encoded
self.im=PhotoImage(data=image)
else:
import Image, ImageTk
if image.lower().endswith('.jpg'):
self.im=ImageTk.PhotoImage(Image.open(image))
else:
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
self.im=ImageTk.PhotoImage(Image.open(StringIO\
(image)))
except:
pass
if title is None:
title='Info'
tkSimpleDialog.Dialog.__init__(self, master, title)
def body(self, master):
if self.im:
Label(master, image=self.im, relief=RIDGE).pack(side=LEFT)
for m in self.msg.split('\n'):
Label(master, text=m.rstrip()).pack()
def buttonbox(self):
box=Frame(self)
w=Button(box, text="OK", width=10, command=self.ok, default=ACTIVE)
w.pack(side=LEFT, padx=5, pady=5)
self.bind("<Return>", self.ok)
box.pack()
if __name__=='__main__':
import base64
root=Tk()
root.title('Info-Dialog-Test')
AboutDialog(root, 'Dies ist ein Test 1!', 'Info-Dialog', 'hw.jpg')
AboutDialog(root, 'Dies ist ein Test 2!', 'Info-Dialog', 'hw.gif')
im=base64.encodestring(open('hw.gif', 'rb').read())
# Hier würde in Wirklichkeit eine base64-encodierte GIF-Grafik
# als String im Quellcode stehen
AboutDialog(root, 'Dies ist ein Test 3!', 'Info-Dialog', im)
im=open('hw.jpg', 'rb').read()
# Hier würde eine beliebig codierte JPG-Grafik stehen, die
# aber vor dem Aufruf der Klasse decodiert werden muss
AboutDialog(root, 'Dies ist ein Test 4!', 'Info-Dialog', im)