2017-06-02 6 views
0

Ich habe herausgefunden, wie man ein Bild für einen Button bekommt, der auf einem Label steht () Ich denke, ich mache es vielleicht auf langatmige Weise, weil ich PIL nicht installieren kann mein Mac aus irgendeinem Grund). Wie auch immer, es funktioniert bis zu einem gewissen Grad - das Problem, das ich habe, ist das Hinzufügen von Leerraum auf beiden Seiten, und dann zeigt das Bild selbst keinen transparenten Hintergrund. Tkinter - Button Image Transparenter Hintergrund

enter image description here

Der Code ich verwende ist wie folgt:

from tkinter import * 
#from PIL import Image 

root = Tk() 


#Removes the title bar and places over mac top bar 
root.tk.call("::tk::unsupported::MacWindowStyle", "style", root._w, "plain", "none") 
# Makes the app full screen 
#root.wm_attributes('-fullscreen', 1) 

root.geometry('{}x{}'.format(480, 320)) 
#root.attributes('-topmost', True) 

def quitApp(): 
    # mlabel = Label (root, text = 'Close').pack() 
    root.destroy() 


background_img = PhotoImage(file="images/bg.gif") 
scanBtn_img = PhotoImage(file="images/scanBtn.gif") 

background = Label(root, 
        compound = CENTER, 
        quitButton = Button(image=scanBtn_img, command = quitApp).pack(), 
        image = background_img).pack(side="right") 

background.image = background_img # keep a reference! 


root.mainloop() 
+0

Sie sicher sind Sie auf python 2.7 sind, weil Sie tkinter in Klein wie python 3. –

Antwort

0

Von dem, was ich verstehe tkinter nativ unterstützt Transparenz in Bezug auf Bilder wie GIF.

Ich zerhackte Ihren Code ein wenig, aber es funktioniert für mich. Vielleicht gibt es ein Problem damit, wie Sie Ihren Code eingerichtet haben. Dein Label hat auch einen Button. Ich glaube nicht, dass du beides haben musst. Sie können die Schaltfläche nur dort erstellen, wo Sie sie haben möchten.

Nur als Referenz habe ich ein Label und eine Schaltfläche auf verschiedenen Seiten mit einem schwarzen Hintergrund verpackt, um die Transparenz des Bildes zu zeigen.

Hier ist der Code, den ich verwendet habe, um eine gif Ich habe, dass Transparenz hat. Ich habe dies sowohl für Python 3.6 als auch für 2.7 getestet, nur für den Fall.

from tkinter import * 

root = Tk() 

def quitApp(): 
    root.destroy() 

background_img = PhotoImage(file="Colors/sa.gif") 
scanBtn_img = PhotoImage(file="Colors/sa.gif") 

background = Label(root,bg='black', image = background_img).pack(side = RIGHT)    
quitButton = Button(bg='black', image=scanBtn_img, command = quitApp).pack(side = LEFT) 
backgroundimage = background_img # keep a reference! 

root.mainloop() 

Update: habe ich die gif Sie im Kommentar Link

Hier ist das Ergebnis.

enter image description here

Update:

Nach etwas mehr tun Graben fand ich, was könnte für Mac OS arbeiten:

Ich habe keinen Mac jetzt zu testen, auf so lassen Sie mich wissen, wenn dies für Sie arbeitet:

from tkinter import * 

root = Tk() 

# Hide the root window drag bar and close button 
root.overrideredirect(True) 
# Make the root window always on top 
root.wm_attributes("-topmost", True) 
# Make the window content area transparent 
root.wm_attributes("-transparent", True) 
# Set the root window background color to a transparent color 
root.config(bg='systemTransparent') 

def quitApp(): 
    root.destroy() 

background_img = PhotoImage(file="Colors/1.gif") 
scanBtn_img = PhotoImage(file="Colors/1.gif") 

background = Label(root,bg='black', image = background_img).pack(side = RIGHT) 
background.config(bg='systemTransparent') 
quitButton = Button(bg='black', image=scanBtn_img, command = quitApp).pack(side = LEFT) 
quitButton.config(bg='systemTransparent') 
backgroundimage = background_img # keep a reference! 

root.mainloop() 
+0

Hallo importieren, sieht es aus wie dieses f oder ich http://prntscr.com/ff5sm7 – BCLtd

+0

Das muss eine Mac-Sache sein. Ich muss etwas mehr darüber nachdenken. –

+0

Ahh das kann es erklären, ich verwende dieses Bild https://image.prntscr.com/image/d036fce797e94291bd38040bd7eb4bd0.gif – BCLtd