Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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
小部件(按钮显示)卡在UI的左下角(带Kivy的Python)_Python_Kivy - Fatal编程技术网

小部件(按钮显示)卡在UI的左下角(带Kivy的Python)

小部件(按钮显示)卡在UI的左下角(带Kivy的Python),python,kivy,Python,Kivy,问题: 如何防止小部件(按钮显示)卡在UI的左下角 目标: from kivy.app import App from kivy.lang import Builder from kivy.uix.button import Button from kivy.uix.widget import Widget from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition class ScreenManagemen

问题:

如何防止小部件(按钮显示)卡在UI的左下角

目标:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition

class ScreenManagement(ScreenManager):
    pass

class AnotherScreen(Screen):
    pass

class MainScreen(Screen):
    pass

class WidgetwithButton(Widget):
    pass

presentation = Builder.load_file("buttonformatexample.kv")

class MainApp(App):
    def build(self):
        return presentation

if __name__ == "__main__":
    MainApp().run()
#: import FadeTransition kivy.uix.screenmanager.FadeTransition

ScreenManagement:
    transition: FadeTransition()
    MainScreen:

<WidgetwithButton>:
    Button:
        text: "stuff"
        font_size: 30
        size_hint: 0.25, 0.1
        pos_hint: {"x":0, "top": 0.69}
<MainScreen>:
    WidgetwithButton:    
    FloatLayout:    
        Button:
            text: "stuff"
            font_size: 30
            size_hint: 0.25, 0.1
            pos_hint: {"x":0, "top": 0.8}
我希望
WidgetwithButton
中的按钮与
SomeScreen
中的按钮格式相匹配。相反,它卡在左下角,几乎看不见

代码如下所示

Python代码:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition

class ScreenManagement(ScreenManager):
    pass

class AnotherScreen(Screen):
    pass

class MainScreen(Screen):
    pass

class WidgetwithButton(Widget):
    pass

presentation = Builder.load_file("buttonformatexample.kv")

class MainApp(App):
    def build(self):
        return presentation

if __name__ == "__main__":
    MainApp().run()
#: import FadeTransition kivy.uix.screenmanager.FadeTransition

ScreenManagement:
    transition: FadeTransition()
    MainScreen:

<WidgetwithButton>:
    Button:
        text: "stuff"
        font_size: 30
        size_hint: 0.25, 0.1
        pos_hint: {"x":0, "top": 0.69}
<MainScreen>:
    WidgetwithButton:    
    FloatLayout:    
        Button:
            text: "stuff"
            font_size: 30
            size_hint: 0.25, 0.1
            pos_hint: {"x":0, "top": 0.8}
KV代码:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition

class ScreenManagement(ScreenManager):
    pass

class AnotherScreen(Screen):
    pass

class MainScreen(Screen):
    pass

class WidgetwithButton(Widget):
    pass

presentation = Builder.load_file("buttonformatexample.kv")

class MainApp(App):
    def build(self):
        return presentation

if __name__ == "__main__":
    MainApp().run()
#: import FadeTransition kivy.uix.screenmanager.FadeTransition

ScreenManagement:
    transition: FadeTransition()
    MainScreen:

<WidgetwithButton>:
    Button:
        text: "stuff"
        font_size: 30
        size_hint: 0.25, 0.1
        pos_hint: {"x":0, "top": 0.69}
<MainScreen>:
    WidgetwithButton:    
    FloatLayout:    
        Button:
            text: "stuff"
            font_size: 30
            size_hint: 0.25, 0.1
            pos_hint: {"x":0, "top": 0.8}
#:导入FadeTransition kivy.uix.screenmanager.FadeTransition
屏幕管理:
转换:FadeTransition()
主屏幕:
:
按钮:
文字:“东西”
字体大小:30
尺寸提示:0.25,0.1
pos_提示:{“x”:0,“top”:0.69}
:
WidgetwithButton:
浮动布局:
按钮:
文字:“东西”
字体大小:30
尺寸提示:0.25,0.1
pos_提示:{“x”:0,“top”:0.8}
输出:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition

class ScreenManagement(ScreenManager):
    pass

class AnotherScreen(Screen):
    pass

class MainScreen(Screen):
    pass

class WidgetwithButton(Widget):
    pass

presentation = Builder.load_file("buttonformatexample.kv")

class MainApp(App):
    def build(self):
        return presentation

if __name__ == "__main__":
    MainApp().run()
#: import FadeTransition kivy.uix.screenmanager.FadeTransition

ScreenManagement:
    transition: FadeTransition()
    MainScreen:

<WidgetwithButton>:
    Button:
        text: "stuff"
        font_size: 30
        size_hint: 0.25, 0.1
        pos_hint: {"x":0, "top": 0.69}
<MainScreen>:
    WidgetwithButton:    
    FloatLayout:    
        Button:
            text: "stuff"
            font_size: 30
            size_hint: 0.25, 0.1
            pos_hint: {"x":0, "top": 0.8}

注意:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition

class ScreenManagement(ScreenManager):
    pass

class AnotherScreen(Screen):
    pass

class MainScreen(Screen):
    pass

class WidgetwithButton(Widget):
    pass

presentation = Builder.load_file("buttonformatexample.kv")

class MainApp(App):
    def build(self):
        return presentation

if __name__ == "__main__":
    MainApp().run()
#: import FadeTransition kivy.uix.screenmanager.FadeTransition

ScreenManagement:
    transition: FadeTransition()
    MainScreen:

<WidgetwithButton>:
    Button:
        text: "stuff"
        font_size: 30
        size_hint: 0.25, 0.1
        pos_hint: {"x":0, "top": 0.69}
<MainScreen>:
    WidgetwithButton:    
    FloatLayout:    
        Button:
            text: "stuff"
            font_size: 30
            size_hint: 0.25, 0.1
            pos_hint: {"x":0, "top": 0.8}

左下角的“stuff”在理想情况下应该与上面的按钮大小相同,并且略低于它(正如
pos\u hint
code所建议的)

WidgetWithButton
小部件的子类,因此它不使用
size\u hint
pos\u hint
(用于布局,每个布局的使用方式略有不同),如果您想要相同的行为,您可能希望让它从
FloatLayout
继承。或者,您可以使用
pos
size
而不是
pos\u hint
size\u hint

<WidgetwithButton>:
    Button:
        text: "stuff"
        font_size: 30
        # size_hint: 0.25, 0.1
        # the following line will emulate that size_hint without the need of a layout
        size: root.width * 0.25, root.height * 0.1

        # pos_hint: {"x":0, "top": 0.69}
        # the following two lines will emulate the same effect without the need of a layout
        x: root.x
        top: self.height and root.y + root.height * 0.69
:
按钮:
文字:“东西”
字体大小:30
#尺寸提示:0.25,0.1
#下一行将模拟该大小提示,而不需要布局
尺寸:根宽*0.25,根高*0.1
#pos_提示:{“x”:0,“top”:0.69}
#以下两行将模拟相同的效果,而无需布局
x:root.x
顶部:self.height和root.y+root.height*0.69

我认为您假设a指的是您的项目,事实上a指的是允许您重现特定问题的通用代码,这应该通过消除不必要的分散注意力的元素(如新类型、变量等)来创建。您的问题不是一般性的,这取决于您设计的结构。我已经更新了问题,以显示手边的基本问题。我什么都不懂。我用最少的可运行代码再次更新了问题。