Größe/Form von Checkbutton

Fragen zu Tkinter.
Antworten
Philipp68
User
Beiträge: 34
Registriert: Freitag 23. Juni 2017, 10:14

Hallo,
ist es möglich die Größe (height,width) für checkbuttons kleiner als 1 einzustellen?
Ich habe einen roten Rahmen um jeden Button, der auch nicht wirklich quadratisch aussieht und ein bisschen zu groß ist.
Gibt es zusätzlich die Möglichkeit einen Runden Rahmen um einen checkbutton zu erstellen?
Lg
BlackJack

@Philipp68: Die Grösse kleiner als 1? Das wäre dann 0 und weder sichtbar noch anklickbar, und damit irgendwie sinnlos für ein Element einer GUI‽

Die Form von Widgets ist in Tk immer rechteckig/quadratisch. Wie ein `Checkbutton` in der ”normalen” Form aussieht hängt auch vom System ab. Unter Windows sehen die aus wie die unter Windows aussehen, unter MacOS wie sie dort aussehen, und unter Linux, nun ja da gibt es ein wenig mehr Wildwuchs. Aber ganz generell kann man über die Form und ob da nun ein Häkchen oder ein Kreuzchen oder ein Kästchen oder … angezeigt wird, nichts sagen/bestimmen.

Du kannst aber bei einem `Checkbutton` die Darstellung auf einen Button umstellen und beispielsweise Bilder für aktiv und inaktiv verwenden. Ansonsten müsstest Du Dir ein eigenes Widget erstellen wenn Du mehr Einfluss auf Darstellung und Verhalten haben möchtest. Eventuell wäre auch ein `Canvas` etwas für den konkreten Anwendungsfall. Da gehen dann auch Kreise oder Bilder mit Transparenz.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

@Philipp68: Wenn Du den Click Event selber durch einen bind umsetzt, kannst Du Dir das Aussehen ganz nach Belieben selber basteln. Ich habe das jetzt nicht gemacht. Aber brauchst ja nur etwa einen Canvas nehmen:

Code: Alles auswählen

# -*- coding: utf-8 -*-

try:
    import tkinter as tk
except ImportError:
    import Tkinter as tk

class Application(tk.Tk):

    def __init__(self,**kwargs):
        tk.Tk.__init__(self,**kwargs)
        # widget definitions ===================================
        self.canvas = Canvas_1(self)
        self.canvas.pack()

class Canvas_1(tk.Canvas):

    def __init__(self,master,**kwargs):
        tk.Canvas.__init__(self,master,**kwargs)
        self.config(width='45', height='45')
        # widget definitions ===================================
        coords = (5,5,40,40)
        item = self.create_oval(*coords)
        self.itemconfig(item,fill = '#ffffff',width = '2.0',tags = 'check')

        coords = (14,19,21,30,32,15,31,16)
        item = self.create_line(*coords)
        self.itemconfig(item,width = '3.0',tags = 'check')


if __name__ == '__main__':
    Application().mainloop()
Philipp68
User
Beiträge: 34
Registriert: Freitag 23. Juni 2017, 10:14

Vielen Dank euch beiden, dann werde ich es mit Hilfe eines Bildes versuchen.
Lg
Antworten