使用此代码:
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.textinput import TextInput
class Main(App):
def build(self):
root = FloatLayout(size=(100, 100))
root.add_widget(TextInput(pos=(0, 0)))
root.add_widget(TextInput(pos=(50, 50)))
return root
if __name__ == '__main__':
Main().run()
我得到两个TextInput
,一个在另一个之上。当我点击顶部TextInput
(通过点击屏幕中间的某个位置)时,由于某种原因,焦点会转到较低的TextInput
。事实上,我可以专注于顶部TextInput
的唯一方法是完全点击下方的TextInput
(通过点击屏幕顶部的右侧)。为什么会这样,我怎么能绕过这个?
答案 0 :(得分:0)
您的问题可以通过两种方式解决。Float layout尊重其子项的pos_hint和size_hint属性。因此您需要为textinput设置size_hint。
即 -
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.textinput import TextInput
class Main(App):
def build(self):
root = FloatLayout(size=(100, 100))
root.add_widget(TextInput(pos=(0, 0),size_hint=(0.5,0.5)))
root.add_widget(TextInput(pos=(100, 100),size_hint=(0.5,0.5)))
return root
if __name__ == '__main__':
Main().run()
或使用boxlayout而不是floatlayout
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.textinput import TextInput
class Main(App):
def build(self):
root = BoxLayout(size=(100, 100))
root.add_widget(TextInput(pos=(0, 0)))
root.add_widget(TextInput(pos=(50, 50)))
return root
if __name__ == '__main__':
Main().run()