spezielle Funktionen bei Tkinter

Fragen zu Tkinter.
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Hi,

gibt es was bei Tkinter wo mann ein Fenster ohne die Leiste oben machen kann
(close,minimieren,... soll weg art Frame)
Zuletzt geändert von jtschoch am Dienstag 28. Juni 2011, 18:10, insgesamt 1-mal geändert.
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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 ...
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

danke
da habe ich schon was root.destroy()
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Gibt es auch noch was damit man die Ecken rund machen kann?
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

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.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Ich habe ein bild dahinter - Danke
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Ich finde nichts richtiges
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Und wie kann man die Fensterposition in die Mitte stellen - egal wie groß der Bildschirm ist soll immer in der Mitte bleiben
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Heute kann man wohl alle Probleme so lösen ^^
Das Leben ist wie ein Tennisball.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

@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.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Gibt es noch einen Befehl,
dass das Fenster immer im Vordergrund bleibt?

Danke voraus
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Habe es gefunden
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

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?
Zuletzt geändert von jtschoch am Dienstag 28. Juni 2011, 18:10, insgesamt 1-mal geändert.
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

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.
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

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)
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

@Xynon1 Danke
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

1.Kann man auch irgendwie bei der ersten 1. auch ein bisschen Farbe geben?
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

2. Wie kann mann das Fenster bewegen wenn es keinen Rahmen hat?
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

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()
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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
Antworten