Удалить значок панели действий Kivy

У меня есть код, как указано выше для моей панели действий в киви

ActionBar:
		background_color:0,191,255,0.5
		pos_hint: {'top':1}
		
		ActionView:
			ActionPrevious:
				with_previous: False
				text:"    [b]Dhobiwala.com[/b]"
				
				app_icon:""
                ### I make app_icon as a blank string...but it takes default icon...I totally want to remove icon from my action bar

				markup:True
				font_size:"16dp"
				on_release:root.Show_Devlopers_Info()
				

в соответствии с приведенным выше кодом... Я хочу удалить значок из строки состояния.... Я даже не могу найти что-либо в документации Киви... У кого-то есть идея?

+2
источник поделиться
3 ответа

Похоже, что отключить значок невозможно.
Ссылка: Kivy sources @github (https://github.com/kivy/kivy/blob/856b305c0c876e53e802f1ac9ae16c21fa91ac1e/kivy/uix/actionbar.py#L214).
Соответствующая часть:

if not self.app_icon:
        self.app_icon = 'data/logo/kivy-icon-32.png'

Вы можете попытаться обойти это, используя небольшое полностью прозрачное изображение в качестве значка.

Кроме того, вы можете попытаться уменьшить размер значка до 0. Посмотрите на свойства app_icon_width и app_icon_height: https://kivy.org/docs/api-kivy.uix.actionbar.html#kivy.uix.actionbar. ActionPrevious.app_icon_height

+1
источник

Это взломать, но поскольку kivy.uix.actionbar.ActionPrevious на самом деле является подклассом BoxLayout, вы можете фактически использовать метод, например remove_widget() или clear_widgets() для управления его содержимым после его создания:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder

kv = """
<MyWidget>:
    ap: ap
    ActionBar:
        background_color:0,191,255,0.5
        pos_hint: {'top':1}

        ActionView:
            ActionPrevious:
                id: ap
                with_previous: False
                text:"    [b]Dhobiwala.com[/b]"

                markup:True
                font_size:"16dp"
"""

Builder.load_string(kv)

class MyWidget(BoxLayout):
    def __init__(self, *args):
        super(MyWidget, self).__init__(*args)
        self.ap.clear_widgets()

class MyButtonsApp(App):
    def build(self):
        return MyWidget()

if __name__ == '__main__':
    MyButtonsApp().run()
+1
источник

Пожалуйста, прочитайте комментарии в коде, чтобы Франкенштейн использовал ваш предпочтительный метод скрытия различных аспектов ActionPrevious; удаление его, похоже, не является вариантом, и DropDown было радостью, когда я попробовал его на Kivy v1.10.0, но один из них может скрывать части или все это из представления.

#!/usr/bin/env python

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.gridlayout import GridLayout

## Un-comment if you wish to add to the action view via Python
# from kivy.uix.actionbar import ActionButton, ActionGroup

kv = """
<SomeLayout_GridLayout>:
    cols: 1
    rows: 2
    row_force_default: True
    rows_minimum: {0: ActionBar.height, 1: self.height - ActionBar.height}
    SomeMenu_ActionBar:
        id: ActionBar

<[email protected]>:
    ActionView:
        id: ActionView
        ## Choose one of the following three pre-coded options
        HiddenIcon_ActionPrevious:
        # HiddenText_ActionPrevious:
        # Hidden_ActionPrevious:

        ## Do the ActionGroup(s) with ActionButton(s) within thing
        ActionGroup:
            id: App_ActionGroup
            mode: 'spinner'
            text: 'App'
            ActionButton:
                text: 'Settings'
                on_press: app.open_settings()
            ActionButton:
                text: 'Quit'
                on_press: app.get_running_app().stop()

        ActionGroup:
            id: File_ActionGroup
            mode: 'spinner'
            text: 'File'
            ActionButton:
                text: 'Open'
            ActionButton:
                text: 'Save'

## Inspired by: https://stackoverflow.com/a/36201399/2632107
##  Hide just the icon, but keep the text, note though
##  that one will lose the 'on_press' and similar methods
<[email protected]>:
    title: app.title if app.title is not None else 'Action Previous'
    with_previous: False
    app_icon: ''
    app_icon_width: 0
    app_icon_height: 0
    ## Comment out the following two lines if you wish to have
    ##  ActionGroup(s) and or ActionButtion(s) pushed to the right
    size_hint_x: None
    width: len(self.title) * 10

## Keep the icon and UI methods but hide the text
<[email protected]>: #
    with_previous: False
    on_press: print(self)
    title: ''

## Hide everything
<[email protected]>:
    with_previous: False
    on_press: print(self) ## method that will not be called easily
    title: '' ## Try placing text here, only a few pixels should show
    size_hint: None, None
    size: 0, 0
"""


class SomeLayout_GridLayout(GridLayout):
    pass


class SomeApp(App):
    def build(self):
        ## Cannot set this in '__init__' for some reason
        self.title = 'Some Sweet App'

        Builder.load_string(kv)

        some_layout = SomeLayout_GridLayout()
        ## Uncomment next line if ya wish to use 'add_widget'
        ##  method on ActionView and add ActionGroup(s) and/or
        ##  ActionButton(s) via Python
        # some_actionview = some_layout.ids.ActionBar.ids.ActionView
        return some_layout

if __name__ == '__main__':
    SomeApp().run()
0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос