Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 23, 2020 07:09:20

dune10991
Зарегистрирован: 2020-03-06
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по круглым кнопкам переключателям (ToggleButton) в Kivy

Здравствуйте!
Возникла сложность, как реализовать в Kivy визуальную фиксацию кнопок переключателей - стандартные кнопки работают, а вот круглые не фиксируют цвет. А меняют его только при нажатии или отпускании (с мотря как реализовать ( on_press или on_release)
Не могу понять, как надо реализовать код, что бы фиксировался цвет активной кнопки

 #! /usr/bin/env python
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
from kivy.uix.togglebutton import ToggleButton
from kivy.properties import StringProperty
from kivy.graphics import Rectangle, Color
from kivy.base import runTouchApp
from kivy.config import Config
from kivy.lang import Builder
Config.set('kivy', 'keyboard_mode', 'systemanddoc')
Config.write()
Builder.load_string('''
<RadioButton>:
    padding:10
    spacing:50
    orientation: 'vertical'
    size_hint: (1, 0.95)
	GridLayout:
        size_hint: (1, .15)
		cols: 2
		size: root.size
        spacing:10
        StrokeButton:
            id: togglebutton1
            markup: True
            text: "Button 1"
            group: 'toggle button'
            state: root.savedstate()[0]
            on_press: root.switchstate1()
            on_press: self.back_color = (0.157,0.455,0.753,1.0)
            on_release: self.back_color = (1.0, 0.0, 1.0, 1.0)
        StrokeButton:
            id: togglebutton2
            markup: True
            text: "Button 2"
            group: 'toggle button'
            state: root.savedstate()[1]
            on_press: root.switchstate2()
            on_press: self.back_color = (0.157,0.455,0.753,1.0)
            on_release: self.back_color = (1.0, 0.0, 1.0, 1.0)
<StrokeButton@ToggleButton>:
    background_color: (1,1,1,0) #если закомментировать, то пропадает рамка и становится видна нижняя квадратная кнопка
    background_normal: ''
    back_color: (1,0,1,1)
    border_radius:18
    color: self.back_color
    bold: True
    canvas.before:
    	Color:
    		rgba:self.back_color
        Line:
            rounded_rectangle: (self.pos[0],self.pos[1],self.size[0], self.size[1],self.border_radius)
            width: 1.2
''')
class RadioButton(BoxLayout):
    slabel1 = StringProperty()
    slabel2 = StringProperty()
    def savedstate(self):
        self.slabel1 = 'Button 1'
        self.slabel2 = 'Butoon 2'
        if self.ids.togglebutton1.state == 'down':
            print(" АКТИВНА 1")
        print(['down', 'normal'])
        return ['down', 'normal']
    def switchstate1(self):
        self.ids.togglebutton1.state = 'down'
        self.back_color = (0.157,0.455,0.753,1.0)
        self.slabel1 = 'Button 1'
        self.slabel2 = 'Button 2'
        print("Активна кнопка 1")
        #self.back_color = (1.0, 0.0, 1.0, 1.0)
    def switchstate2(self):
        self.ids.togglebutton2.state = 'down'
        self.slabel1 = 'Button 2'
        self.slabel2 = 'Button 1'
        print("Активна кнопка 2")
class RadioButtonApp(App):
    def build(self):
        return RadioButton()
if __name__ == '__main__':
    RadioButtonApp().run()

Офлайн

#2 Авг. 23, 2020 20:15:07

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Вопрос по круглым кнопкам переключателям (ToggleButton) в Kivy

 from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
from kivy.uix.togglebutton import ToggleButton
from kivy.properties import StringProperty
from kivy.graphics import Rectangle, Color
from kivy.base import runTouchApp
from kivy.config import Config
from kivy.lang import Builder
Config.set('kivy', 'keyboard_mode', 'systemanddoc')
Config.write()
Builder.load_string('''
<RadioButton>:
    padding:10
    spacing:50
    orientation: 'vertical'
    size_hint: (1, 0.95)
    GridLayout:
        size_hint: (1, .15)
        cols: 2
        size: root.size
        spacing:10
        StrokeButton:
            id: togglebutton1
            markup: True
            text: "Button 1"
            group: 'toggle button'
            state: root.savedstate()[0]
            on_press: root.switchstate1(); self.back_color = (0.157,0.455,0.753,1.0); togglebutton2.back_color = (1.0, 0.0, 1.0, 1.0)
            #on_release: self.back_color = (1.0, 0.0, 1.0, 1.0)
        StrokeButton:
            id: togglebutton2
            markup: True
            text: "Button 2"
            group: 'toggle button'
            state: root.savedstate()[1]
            on_press: root.switchstate2(); self.back_color = (0.157,0.455,0.753,1.0); togglebutton1.back_color = (1.0, 0.0, 1.0, 1.0)
            #on_release: self.back_color = (1.0, 0.0, 1.0, 1.0)
<StrokeButton@ToggleButton>:
    background_color: (1,1,1,0) #если закомментировать, то пропадает рамка и становится видна нижняя квадратная кнопка
    background_normal: ''
    back_color: (1,0,1,1)
    border_radius:18
    color: self.back_color
    bold: True
    canvas.before:
        Color:
            rgba:self.back_color
        Line:
            rounded_rectangle: (self.pos[0],self.pos[1],self.size[0], self.size[1],self.border_radius)
            width: 1.2
''')
class RadioButton(BoxLayout):
    slabel1 = StringProperty()
    slabel2 = StringProperty()
    def savedstate(self):
        self.slabel1 = 'Button 1'
        self.slabel2 = 'Butoon 2'
        if self.ids.togglebutton1.state == 'down':
            print(" АКТИВНА 1")
        print(['down', 'normal'])
        return ['down', 'normal']
    def switchstate1(self):
        self.ids.togglebutton1.state = 'down'
        self.back_color = (0.157,0.455,0.753,1.0)
        self.slabel1 = 'Button 1'
        self.slabel2 = 'Button 2'
        print("Активна кнопка 1", self.ids.togglebutton1.state)
        #self.back_color = (1.0, 0.0, 1.0, 1.0)
    def switchstate2(self):
        self.ids.togglebutton2.state = 'down'
        self.slabel1 = 'Button 2'
        self.slabel2 = 'Button 1'
        print("Активна кнопка 2", self.ids.togglebutton2.state)
class RadioButtonApp(App):
    def build(self):
        return RadioButton()
if __name__ == '__main__':
    RadioButtonApp().run()
костыль хотя вроде как в документации написано мол если одна кнопка в группе нажата должно само работать



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Авг. 23, 2020 20:22:50)

Офлайн

#3 Авг. 24, 2020 12:06:34

dune10991
Зарегистрирован: 2020-03-06
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по круглым кнопкам переключателям (ToggleButton) в Kivy

AD0DE412
Спасибо, большое!!!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version