Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么';Kivy ActionBar不能正常工作吗?_Python_Python 3.x_Error Handling_Kivy - Fatal编程技术网

Python 为什么';Kivy ActionBar不能正常工作吗?

Python 为什么';Kivy ActionBar不能正常工作吗?,python,python-3.x,error-handling,kivy,Python,Python 3.x,Error Handling,Kivy,我正试图利用kivy pingball和动作栏示例的创意创建一个动作栏。 这是我的代码: from kivy.app import App from kivy.uix.widget import Widget from kivy.lang import Builder from kivy.core.window import Window Builder.load_string(""" <TitleBar>: ActionBar: pos_hint: {'t

我正试图利用kivy pingball和动作栏示例的创意创建一个动作栏。
这是我的代码:

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.lang import Builder
from kivy.core.window import Window

Builder.load_string("""
<TitleBar>:
    ActionBar:
        pos_hint: {'top':1}
        ActionView:
            use_separator: True
            ActionPrevious:
                title: 'Action Bar'
                with_previous: False
            ActionOverflow:
            ActionButton:
                icon: 'atlas://data/images/defaulttheme/audio-volume-high'
            ActionButton:
                important: True
                text: 'Important'
            ActionButton:
                text: 'Btn2'
            ActionButton:
                text: 'Btn3'
            ActionButton:
                text: 'Btn4'
            ActionGroup:
                text: 'Group1'
                ActionButton:
                    text: 'Btn5'
                ActionButton:
                    text: 'Btn6'
                ActionButton:
                    text: 'Btn7'
""")
class TitleBar(Widget):
    pass
class TrialApp(App):

    def build(self):
        Window.size=(875,575)
        Window.borderless=True
        return TitleBar()

TrialApp().run()
从kivy.app导入应用
从kivy.uix.widget导入widget
从kivy.lang导入生成器
从kivy.core.window导入窗口
生成器。加载\u字符串(“”)
:
操作栏:
位置提示:{'top':1}
ActionView:
使用分隔符:True
以前的行动:
标题:“动作栏”
与_previous一起:False
ActionOverflow:
操作按钮:
图标:'atlas://data/images/defaulttheme/audio-volume-high'
操作按钮:
重要提示:正确
文本:“重要”
操作按钮:
文本:“Btn2”
操作按钮:
文本:“Btn3”
操作按钮:
文本:“Btn4”
行动小组:
文本:“组1”
操作按钮:
文本:“Btn5”
操作按钮:
文本:“Btn6”
操作按钮:
文本:“Btn7”
""")
类标题栏(小部件):
通过
类TrialApp(应用程序):
def生成(自):
Window.size=(875575)
Window.borderless=True
返回标题栏()
TrialApp().run()
尽管使用了
pos\u hint:{'top':1}
,但为什么操作栏会排到底部?
Python 3.7.5 Windows 10

当您阅读的文档时,您得到的不是
Widget
,而是需要使用
FloatLayout

因此,代码必须是:

from kivy.uix.floatlayout import FloatLayout
class TitleBar(FloatLayout):
    pass

应用程序的根
小部件
是一个简单的
小部件
,它不打算用作容器,也不支持像
pos\u hint
这样的东西。尝试更改:

class TitleBar(Widget):


这使您的根
小部件成为一个
浮动布局
,它将处理
位置提示

谢谢您,我在30秒前找到了:)并发布了答案。您如何使操作按钮执行操作?
操作按钮
只是
按钮的扩展,所以你可以像一个普通的
按钮一样指定“按下”或“释放”上的
。它没有“在移动”或“在悬停”之类的吗?我想没有。KivyMD有一个
悬停行为
,您可以使用它。您可以使用类似于
Window.bind(mouse\u pos=self.on\u motion)
collide\u point()
的工具来检查鼠标位置是否在感兴趣的
小部件上。
class TitleBar(FloatLayout):