Rand um angeklickten Button entfernen

Fragen zu Tkinter.
Antworten
Kapf
User
Beiträge: 13
Registriert: Sonntag 30. September 2012, 15:08

Hallo,

ich habe es mittels 'borderwidth="0"' schon geschafft den normalen Rahmen zu entfernen. Jedoch möchte ich auch folgendes vermeiden:
A button's relief is changed to sunken whenever mouse button 1 is pressed over the button, and the relief is restored to its original value when button 1 is later released.
Der Button sollte also dauerhaft "raised" sein. Gibt es da eine Möglichkeit?

Danke im Voraus!
Kapf
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi Kapf
Kapf hat geschrieben:Der Button sollte also dauerhaft "raised" sein. Gibt es da eine Möglichkeit?
Ja gibt es. Hierfür würde ich ein Label-Widget einsetzen:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import Tkinter as tk
from functools import partial

script_name = sys.argv[0]

MAIN_WIN_XPOS   = 10
MAIN_WIN_YPOS   = 10
MAIN_WIN_WIDTH  = 200
MAIN_WIN_HEIGHT = 100

def button_callback(state, event):
    
    if state:
        event.widget.config(fg='red')
    else:
        event.widget.config(fg='black')

def main():    
    app_win = tk.Tk()

    app_win.geometry("%dx%d+%d+%d" % (MAIN_WIN_WIDTH, MAIN_WIN_HEIGHT,
        MAIN_WIN_XPOS, MAIN_WIN_YPOS))
      
    app_win.title(script_name)

    label_button = tk.Label(app_win, text='Label-Button', relief='raised',
        cursor='hand1', font=('Helveticat', 20))
    label_button.pack(expand='yes')
    label_button.bind('<Button-1>', partial(button_callback, True))
    label_button.bind('<ButtonRelease-1>', partial(button_callback, False))

    app_win.mainloop()
    
if __name__ == '__main__':
    main()
Gruß wuf :wink:
Take it easy Mates!
Kapf
User
Beiträge: 13
Registriert: Sonntag 30. September 2012, 15:08

Vielen Dank! Hast mir sehr weiter geholfen!
Antworten