[PYTHON] Machen Sie mit Kivy SF-ähnliche Knöpfe

Abgeschlossen

Ich habe es mit Kivy geschafft und dachte, ich könnte einen SF-ähnlichen Knopf machen, ohne Bilder zu verwenden. Als Ergebnis wurde eine solche Schaltfläche erstellt. SFButton.JPG

Deshalb habe ich es geschafft

Die Richtlinie ist einfach und wird durch Erstellen von zwei Frames auf der Schaltflächenleinwand erreicht. Wenn Sie main.py und test.kv in derselben Hierarchie ausführen, sieht es wie das erste Bild aus.

main.py


from kivy.app import App
from kivy.factory import Factory

class TestApp(App):
    def __init__(self, **kwargs):
        super(TestApp, self).__init__(**kwargs)
        
    def build(self):
        self.root = root = Factory.FloatLayout()

        btn = Factory.SFButton(
            text="This is SF !",
            size_hint=(0.5, 0.2),
            pos_hint={'x':0.25, 'y':0.4},
            on_release=self.btn_pushed
        )
        root.add_widget(btn)
        
        return root
    
    def btn_pushed(self, instance, *args):
        print(f"{instance.text} pushed !")


def main():
    TestApp().run()

if __name__ == '__main__':
    main()

test.kv


#: import hex kivy.utils.get_color_from_hex

<SFButton@Button>:
    background_color: hex('#44acac')
    canvas.before:
        Color:
            rgba: hex('#26c7e5')
        Line:
            width: 2
            rectangle: self.x, self.y, self.width, self.height

        Color:
            rgba: hex('#26c7e5')
        Line:
            width: 1
            rectangle: self.x-4, self.y-4, self.width+8, self.height+8

Punkt

In canvas.before können Sie ein Bild zeichnen, indem Sie die Farbe → die Figur fortlaufend angeben. Damit wird das Viereck in der Reihenfolge innen → außen gezeichnet. Wenn Sie hier die äußere Linie zeichnen, genau wie die innere Linie

rectangle: self.x, self.y, self.width, self.height

Wenn Sie tun ... failed.JPG Und so ist nur die innere Linie zu sehen. (Warum wird es nicht durch die äußere Zeile überschrieben?) Daher auf der äußeren Linie

rectangle: self.x-4, self.y-4, self.width+8, self.height+8

Ich habe es so eingestellt, dass es ein etwas größeres Quadrat wird. Ich denke, diese Seite wird sich mit der Breite der äußeren Linie wieder ändern. Apropos

rectangle: self.x-3, self.y-3, self.width+6, self.height+6

Im Falle von ex2.JPG ist geworden. Ich habe verschiedene andere Dinge ausprobiert, aber ich persönlich mag die Anpassung von test.kv, das das Bild am Anfang ist.

Ich denke, dass es einfacher ist, die Farbspezifikation hexadezimal zu sehen, daher verwende ich die Funktion kivy.utils.get_color_from_hex.

Schließlich

Am Ende möchte ich mit einem SF-ähnlichen Design arbeiten, auch wenn es gedrückt wird.

Recommended Posts

Machen Sie mit Kivy SF-ähnliche Knöpfe
GUI-Programmierung mit kivy ~ Teil 4 Verschiedene Tasten ~
Machen Sie ein Zeichnungsquiz mit kivy + PyTorch
Machen Sie Ja Nein Popup mit Kivy
GUI-Programmierung mit kivy ~ Teil 5 Erstellen von Schaltflächen mit Bildern ~
Bilden Sie Lambda-Schichten mit Lambda
Machen Sie eine Yuma mit Discord.py
Erstellen Sie Folien mit iPython
Einführung in Tkinter 2: Button
Machen wir Othello mit wxPython
Machen Sie es mit der Syntax einfach
Erstelle Puyopuyo AI mit Python
Machen Sie eine Lotterie mit Python
Machen Sie ein Feuer mit kdeplot
Machen Sie Slack Chatbot mit Errbot
Erstelle einen LINE-Bot mit Python + Heroku
Machen Sie ASCII-Kunst mit tiefem Lernen
Lassen Sie uns eine GUI mit Python erstellen.
Machen Sie einen Sound mit Jupyter Notebook
Machen wir einen Blockbruch mit wxPython
Machen wir Othellos KI mit Chainer-Teil 1-
Vertrauteres Testen mit Selen
Erstellen Sie ein Empfehlungssystem mit Python
Async / warte mit Kivy und tkinter
Machen Sie den Computerserver mit LTSP plattenlos
Machen Sie einen Filter mit einer Django-Vorlage
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Machen wir mit xCAT einen Spacon
Machen wir Othellos KI mit Chainer-Teil 2-
Erstellen Sie mit PySide einen Modelliterator
Bringen Sie Menschen mit Deep Learning zum Lächeln
Machen Sie Scrapy exe mit Pyinstaller
Machen Sie eine schöne Grafik mit Plotly