Seite 1 von 2

spezielle Funktionen bei Tkinter

Verfasst: Donnerstag 23. Juni 2011, 17:48
von jtschoch
Hi,

gibt es was bei Tkinter wo mann ein Fenster ohne die Leiste oben machen kann
(close,minimieren,... soll weg art Frame)

Re: fenster ohne Leiste

Verfasst: Donnerstag 23. Juni 2011, 18:03
von numerix

Code: Alles auswählen

import Tkinter as tk

root = tk.Tk()
tk.Label(text="Fenster ohne Rahmen").pack()
root.overrideredirect(True)
root.mainloop()
Aber überleg dir vorher, wie du das Fenster schließen willst ...

Re: fenster ohne Leiste

Verfasst: Donnerstag 23. Juni 2011, 18:34
von jtschoch
danke
da habe ich schon was root.destroy()

Re: fenster ohne Leiste

Verfasst: Donnerstag 23. Juni 2011, 18:43
von jtschoch
Gibt es auch noch was damit man die Ecken rund machen kann?

Re: fenster ohne Leiste

Verfasst: Donnerstag 23. Juni 2011, 18:51
von Xynon1
Klar nimm einen Mac. - Spaß beiseite das aussehen richtet sich nach der Standard-Lib die Tk für das Aussehen nutzt, also von OS zu OS unterschiedlich. Tkinter kann selbst keine anderen "Skins" nutzen, dies geht aber z.B. mit "ttk". Gib einfach mal in der Forensuche oder bei Google "tkinter ttk clam" ein da findet man mehr als genug. Solltest du aber reines Tkinter benutzen wollen, so würde ich den Hintergrund des Toplevel-Widgets transparent setzen und ein PIL-Image mit runden Ecken darauf packen.

Re: fenster ohne Leiste

Verfasst: Donnerstag 23. Juni 2011, 18:54
von jtschoch
Ich habe ein bild dahinter - Danke

Re: fenster ohne Leiste

Verfasst: Donnerstag 23. Juni 2011, 19:06
von jtschoch
Ich finde nichts richtiges

Re: fenster ohne Leiste

Verfasst: Donnerstag 23. Juni 2011, 19:07
von jtschoch
Und wie kann man die Fensterposition in die Mitte stellen - egal wie groß der Bildschirm ist soll immer in der Mitte bleiben

Re: fenster ohne Leiste

Verfasst: Donnerstag 23. Juni 2011, 19:10
von EyDu
Heute kann man wohl alle Probleme so lösen ^^

Re: fenster ohne Leiste

Verfasst: Donnerstag 23. Juni 2011, 19:30
von Xynon1
@EyDu
Das dachte ich auch gerade. :mrgreen:

@jtschoch
wuf und ich hatten zu diesen Themen auch schon was im Forum geschrieben. Deweiteren habe ich einige Schlagworte genannt und du findest gar nichts?! Das deutet eher darauf hin das du nicht richtig gesucht hast.

Re: fenster ohne Leiste

Verfasst: Sonntag 26. Juni 2011, 08:00
von jtschoch
Gibt es noch einen Befehl,
dass das Fenster immer im Vordergrund bleibt?

Danke voraus

Re: fenster ohne Leiste

Verfasst: Sonntag 26. Juni 2011, 09:25
von jtschoch
Habe es gefunden

Re: fenster ohne Leiste

Verfasst: Dienstag 28. Juni 2011, 17:21
von jtschoch
1.Habe noch eine Frage:
kann mann den Hintergrund Transparenz machen, aber Label's,Button... sollen es nicht sein?

gibt es dafür einen Befehl?

Re: fenster ohne Leiste

Verfasst: Dienstag 28. Juni 2011, 17:49
von jtschoch
2.oder gibt es was damit mann die Fenster im XP style machen kannn? (Buttol, Scrollbar...)oder eigne style's

3.Und wie kann man unten bei der Leiste da wo die Urzeit ist, so ein Icon mit dem Programm soll aber nur angezeigt werden wenn das Programm läuft.

Re: spezielle Funktionen bei Tkinter

Verfasst: Dienstag 28. Juni 2011, 18:53
von Xynon1
1. Sowas ?

Code: Alles auswählen

#!/usr/bin/env python
import Tkinter as tk
   
if __name__ == "__main__":  
    root = tk.Tk()
    root.attributes("-transparentcolor", "pink")
    root.config(bg="pink")
    root.overrideredirect(True)
    root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(),
                                       root.winfo_screenheight()))

    for side in ["left", "right", "top", "bottom"]:
        bt = tk.Button(root, text="Hello World", command=root.destroy)
        bt.pack(side=side)
        
    root.mainloop()
2. ja, ttk hatte ich oben schon erwähnt.

3. tktray - gibt es aber nicht Standardmäßig in Tkinter müsste aber seit Tcl/Tk 8.4 in der Standard-Lib sein. (Ist aber nicht OS unabhängig)

Re: spezielle Funktionen bei Tkinter

Verfasst: Mittwoch 29. Juni 2011, 13:44
von jtschoch
@Xynon1 Danke

Re: spezielle Funktionen bei Tkinter

Verfasst: Mittwoch 29. Juni 2011, 13:55
von jtschoch
1.Kann man auch irgendwie bei der ersten 1. auch ein bisschen Farbe geben?

Re: spezielle Funktionen bei Tkinter

Verfasst: Mittwoch 29. Juni 2011, 15:21
von jtschoch
2. Wie kann mann das Fenster bewegen wenn es keinen Rahmen hat?

Re: spezielle Funktionen bei Tkinter

Verfasst: Mittwoch 29. Juni 2011, 16:24
von Xynon1
1. Ich weiß nicht wo dein Problem ist, man kann damit alles machen was einen einfällt.
2. Gar nicht, höchstens mit einer eigenen Funktion die du dann selbst auf ein Widget legen musst.

zu 1: Der Schwachsinn ist mir eingefallen :twisted:

Code: Alles auswählen

#!/usr/bin/env python
import Tkinter as tk
import math

DELAY = 100

def get(center, radius, velocity):
    x = int(radius * math.cos(velocity) + center[0])
    y = int(radius * math.sin(velocity) + center[1])
    return x, y

def rotate(cv, rect, size, center, radius, velocity):
    x, y = get(center, radius, velocity)
    cv.coords(rect, x, y, x + size[0], y + size[1])
    cv.after(DELAY, rotate, cv, rect, size, center, radius, velocity + 1)
    
if __name__ == "__main__":    
    root = tk.Tk()
    screen_width = root.winfo_screenwidth()
    screen_height = root.winfo_screenheight()
    
    root.attributes("-transparentcolor", "pink")
    root.overrideredirect(True)
    root.geometry("{0}x{1}+0+0".format(screen_width, screen_height))

    cv = tk.Canvas(root, bg="white")
    cv.pack(expand=True, fill="both")
    
    width = 3
    radius = math.hypot(screen_width, screen_height)
    center = center_x, center_y = screen_width / 2, screen_height / 2
    
    for velocity in xrange(0, 360):
        x, y = get(center, radius, velocity)
        cv.create_line(x, y, center_x, center_y, width=width, fill="pink")
               
    for side in ["left", "right", "top", "bottom"]:
        bt = tk.Button(cv, text="Hello World", command=root.destroy)
        bt.pack(side=side)

    size = width, height = 250, 250
    radius = 300
    center = center_x - (width / 2), center_y - (height / 2)
    
    #amount = 8
    #for angle in xrange(amount):
    #    velocity = angle * (math.pi / (amount / 2))    
    #    rect = cv.create_rectangle(0, 0, width, height, fill="pink")
    #    rotate(cv, rect, size, center, radius, velocity)
        
    root.mainloop()

Re: spezielle Funktionen bei Tkinter

Verfasst: Mittwoch 29. Juni 2011, 16:46
von numerix

Code: Alles auswählen

root.attributes("-transparentcolor", "pink")
Läuft auf meinem Linux-System (Ubuntu) nicht. Fehlermeldung lautet:

Code: Alles auswählen

_tkinter.TclError: bad attribute "-transparentcolor": must be -alpha, -topmost, -zoomed, or -fullscreen