小部件(按钮显示)卡在UI的左下角(带Kivy的Python)
问题: 如何防止小部件(按钮显示)卡在UI的左下角 目标:小部件(按钮显示)卡在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
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指的是允许您重现特定问题的通用代码,这应该通过消除不必要的分散注意力的元素(如新类型、变量等)来创建。您的问题不是一般性的,这取决于您设计的结构。我已经更新了问题,以显示手边的基本问题。我什么都不懂。我用最少的可运行代码再次更新了问题。