我想测试一下在一个类中使用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, 它也显示为空白.
任何帮助都将是非常感激的
我试了你的代码,没有任何问题,返回的是 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()