为什么当我在两个类中使用相同的布局时,有一个布局没有显示出来?

问题描述 投票:1回答:1

我想测试一下在一个类中使用kivy.Windows包和在一个类外使用kivy.Windows包的区别(以尝试解决我在这里遇到的问题。Kivy TextInput要在Android键盘上方,但是屏幕的其他部分要保持原样。 ).

因此,我想知道,如果我在两个类中拥有两个独立的FloatLayouts,我是否可以只控制其中一个。但是我注意到,如果我把两个FloatLayouts都包含在同一个类中,它就会显示一切正常,但是如果我尝试把它们放在两个不同的类中,最上面的那个就会消失,而且无论我如何改变位置,我都无法在屏幕上看到它。为什么会出现这种情况?

这是我的.py文件。

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.core.window import Window

#Window.softinput_mode = "below_target"

class Header(FloatLayout):
    pass

class TestBox(FloatLayout):
    pass

kv = Builder.load_file("rec_view.kv")

class RVTestApp(App):
    def build(self):
        return TestBox()
        #return kv

if __name__ == "__main__":
    RVTestApp().run()

这是我的.kv文件

<Header>:
   FloatLayout:
      Label:
         pos_hint: {'center_x': 0.5, "top": 0.1}
         size_hint: (0.2, 0.5)
         font_size: 40
         text: "TEXT AT TOP OF SCREEN"
<TestBox>:
   FloatLayout:
      TextInput:
         pos_hint: {"x": 0.1, "y": 0.05}
         size_hint: (0.3, 0.05)
         multline:False
      Button:
         text: "CHECK BUTTON FOR ANSWERS AT BOTTOM OF SCREEN"
         pos_hint: {"x": 0.6, "y": 0.05}
         size_hint: (0.3, 0.05)

我想最初是因为我返回了TestBox(), 但即使我返回Header()或kv, 它也显示为空白.

任何帮助都将是非常感激的

python kivy kivy-language
1个回答
1
投票

我试了你的代码,没有任何问题,返回的是 TestBox()然而, Header() 这主要是因 pos_hint top 被设定为 0.1 而不是 1.

现在这两个功能都能用了

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.core.window import Window

#Window.softinput_mode = "below_target"
string = '''
<Header>:
   FloatLayout:
      Label:
         pos_hint: {"top": 1,'center_x':0.5}
         size_hint: (0.2, 0.5)
         font_size: 40
         text: "TEXT AT TOP OF SCREEN"

<TestBox>:
   FloatLayout:
      TextInput:
         pos_hint: {"x": 0.1, "y": 0.05}
         size_hint: (0.3, 0.05)
         multline:False
      Button:
         text: "CHECK BUTTON FOR ANSWERS AT BOTTOM OF SCREEN"
         pos_hint: {"x": 0.6, "y": 0.05}
         size_hint: (0.3, 0.05)
    '''
class Header(FloatLayout):
    pass

class TestBox(FloatLayout):
    pass

kv = Builder.load_string(string)

class RVTestApp(App):
    def build(self):
        return TestBox()
        #return Header()

        #return kv

if __name__ == "__main__":
    RVTestApp().run()
© www.soinside.com 2019 - 2024. All rights reserved.