2017-04-06 9 views
1

Ich habe einige Beiträge zu diesem Thema gesehen und habe die Vorschläge ohne Erfolg versucht. Ich möchte eine Schaltfläche mit einem Bild erstellen. Der unten stehende Code erzeugt den Button ganz gut, aber er zieht einen dünnen Rand hinter das Bild, der hässlich aussieht. Wie kann ich die Knopfleiste loswerden? Ich benutze Python 3.5 unter Mac OS X 10.12.3.Erstellen Sie eine tkinter Bildschaltfläche ohne Rahmen

Hier ist der Code:

from tkinter import * 
from tkinter import ttk 

sDefaultImage = None 

def sStockPileObserver(): 
    print("Button clicked") 

def main(): 
    global sDefaultImage 
    sRoot = Tk() 
    sMainFrame = ttk.Frame(sRoot, padding="3 3 12 12") 
    sMainFrame.grid(column=0, row=0, sticky=(N, W, E, S)) 
    sMainFrame.columnconfigure(0, weight=1) 
    sMainFrame.rowconfigure(0, weight=1) 
    sMainFrame.rowconfigure(2, minsize=85) 
    sDefaultImage = PhotoImage(file='backDimmed.gif') 

    s = ttk.Style() 
    bg = s.lookup('TFrame', 'background') 
    s.configure("SolitaireCard.TButton", borderwidth=0, background=bg, highlightbackground=bg, \ 
          highlightthickness=0, activebackground=bg, activeforeground=bg, padx=0) 
    sStockPileButton = ttk.Button(sMainFrame, image=sDefaultImage, style="SolitaireCard.TButton", width=0, command=lambda: sStockPileObserver()) 
    sStockPileButton.grid(column=1, row=1, sticky=(W, E), padx=0) 
    return sRoot 

sRoot = main() 
sRoot.mainloop() 

Hier ist, was es produziert:

Button shown with thin border

+1

Vielleicht könnten Sie das Bild in ein Label anstelle eines Buttons legen. Ich vermute, das würde Ihnen mehr Kontrolle über den Grenzstil geben. Wenn Sie denken, "aber wie würde ich Mausklicks auf dem Etikett erkennen?", Können Sie dafür die Methode 'bind' verwenden. – Kevin

Antwort

0

auf OSX und Windows Sie nicht viel Kontrolle über das Aussehen von Schaltflächen haben.

Eine Lösung besteht darin, eine Schaltfläche aus einem Etikett oder einer Arbeitsfläche zu erstellen. Sie müssen Ihre eigenen Bindungen hinzufügen, um Klicks zu behandeln, aber das ist ziemlich einfach. In den meisten Fällen ändern die Bindungen einfach den Rahmen von erhöht zu verringert und rufen dann eine Funktion auf, wenn Sie den Klick abschließen.

Verwandte Themen