Seite 1 von 1

Re: Größe/Form von Checkbutton

Verfasst: Samstag 5. August 2017, 11:20
von 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.

Re: Größe/Form von Checkbutton

Verfasst: Samstag 5. August 2017, 11:51
von Alfons Mittelmeyer
@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()