Seite 1 von 1

Tab Widgets

Verfasst: Dienstag 8. Januar 2008, 05:01
von feldmaus
Hi Alle,

ich suche nach einem Modul womit ich in einem Hautpfenster TabWidgets erstellen kann für das Gui Toolkit Tkinter.

Meine suche bracht mich zu "Frame()" und "Canvas", aber diese scheinen nicht direkt das zu sein was ich wollte. Bei canvas müsste ich dann meine Tabwidgets wahrscheinlich selber zeichnen und alle Verhalten selber einstellen.

Gibt es hier nicht schon ein fertiges Gerüst oder eine fertiges Modul?
Kann mir da Jemand einen Tipp geben bitte?
Schön wäre auch ein Link zu einem Tutorial.

Grüsse Markus

Verfasst: Dienstag 8. Januar 2008, 09:42
von BlackJack
Schau Dir mal `Tix.NoteBook` an.

Verfasst: Dienstag 8. Januar 2008, 15:26
von schlangenbeschwörer
Ja, mit Tix geht das, wenn auch am anfang etwas schwierig, weils sich nicht ganz so wie Tkinter "anfühlt".
Wenn du auf Abhängigkeiten verzichten willst und es um die funktion und nicht so aufs Aussehen ankommt, kannst du auch einfach mehrere Frames in ein Frame packen (also nur als master angeben) und über Buttons dann jeweils ein Frame sichtbarmachen.

Verfasst: Dienstag 8. Januar 2008, 17:03
von feldmaus
Danke für die Antworten. Ich werde es mir nochmal durch den Kopf gehen lassen. Wahrscheinlich werde ich doch auf Pyqt zurück greifen, da ich zu Qt4 ja auch ein Buch habe.

Grüsse Markus

Verfasst: Dienstag 8. Januar 2008, 22:32
von pyStyler
Hallo,
feldmann_markus hat geschrieben:Danke für die Antworten. Ich werde es mir nochmal durch den Kopf gehen lassen. Wahrscheinlich werde ich doch auf Pyqt zurück greifen, da ich zu Qt4 ja auch ein Buch habe.

Grüsse Markus
warte mal! Wenns dir nur um Tabs geht, hier bitte.

einleitung....
Schritt1: http://www.python-forum.de/topic-12034. ... light=tile

test..

Code: Alles auswählen

import Tilewrapper
import Tkinter
import tkFont
from Tkconstants import *

class Taschenrechner(Tkinter.Frame): 
    
    def __init__(self,master=None):
        
        Tkinter.Frame.__init__(self, master) 
        self.pack(expand=YES, fill=BOTH)    
        
        self.stringvar = Tkinter.StringVar() 
        self.entry = Tilewrapper.Entry(self, 
                                textvariable=self.stringvar, 
                                font=('tahoma',40,'bold') ) 
        self.entry.pack(side=TOP, expand=NO, 
                            fill=BOTH, 
                            padx=10, pady=10) 
                    
        for tasten in ('789/', '456*','123-', '.0+='): 
            self.frame1 = Tkinter.Frame(self) 
            self.frame1.pack(side=TOP, expand=YES, fill=BOTH, padx=10) 
            for zeichen in tasten: 
                self.b = Tilewrapper.Button(self.frame1, 
                                text=zeichen, 
                                command=lambda z=zeichen, 
                                var=self.stringvar, : var.set(var.get() + z)) 
                self.b.pack(side=LEFT, expand=YES, fill=BOTH) 
                
            if zeichen == '=': 
                self.b.configure(command=self.rechnen) 
        
    def rechnen(self):
        
        rec = str(eval(self.stringvar.get())) 
        self.entry.delete(0, END) 
        self.entry.insert(END, str( rec))
        
class MainApp:
    
    def __init__(self, parent):
       
        parent.tk.call("package", "require", "tile")
        parent.geometry('400x300')
           
        nb = Tilewrapper.Notebook(parent)
        nb.pack(expand=YES, fill=BOTH)

        t = Taschenrechner(nb)
        b1 = Tilewrapper.Button(nb, text="Button1")
        b1.pack(padx=10, pady=10)
        nb.add(b1, text="Notebook 1")
         
        b2 = Tkinter.Button(nb, text="Button2", bg='blue')
        nb.add(b2, text="Notebook 2")
        nb.add(t, text='rechner')

def _main():
    
    root = Tkinter.Tk()
    main = MainApp(root)
    root.mainloop()
    
if __name__=='__main__':
    _main()
Gruss
pyStyler

Verfasst: Mittwoch 9. Januar 2008, 21:12
von Mr_Snede
Wenn es ohne Zusatzinstallation sein soll:
http://aspn.activestate.com/ASPN/Cookbo ... ipe/188537

Oder die Python Mega Widgets Da die in purem Python geschrieben sind, können sie einfach im gleichen Ordner wie dein Programm liegen.