我一直在尝试使用Kivy在运行Raspian Jessie的Raspberry Pi上构建一个简单的GUI。但我有一些问题......
我的TextInput不接受任何键盘输入,但当我在文本输入框内单击时(闪烁光标等) 聚焦。这不是我的键盘的问题,因为我可以使用Ctrl-C成功中断程序。
我怀疑将TextInput放在BoxLayout中可能存在问题,但如果我不这样做,TextInput会占用整个屏幕。如果BoxLayout是问题,那么我怎么能限制TextInput的大小(因为显然size_hints不做任何事情)。任何帮助,将不胜感激!
这是我的代码。为简单起见,我决定将我的代码分成.py和.kv文件:
gui.kv
#:kivy 1.4
#:import turn_on led_controller.turn_on
#:import turn_off led_controller.turn_off
#:set Iset 100
FloatLayout:
ToggleButton:
id: on_off_switch
text: "ON" if self.state == 'down' else "OFF"
pos_hint: {'center_x': 0.2, 'center_y': 0.2}
size_hint: 0.3, 0.2
on_state: turn_on(app.ser, Iset) if self.state == 'down' else turn_off(app.ser)
Button:
text: "TODO: Graph"
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
size_hint: 0.7, 0.3
BoxLayout:
pos_hint: {'center_x': 0.6, 'center_y': 0.9}
size_hint: 0.7, 0.1
TextInput:
id: textbox
gui.py
import kivy
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.textinput import TextInput
from kivy.uix.togglebutton import ToggleButton
from kivy.uix.label import Label
class GUI(App):
from led_controller import init_serial
ser = init_serial()
def build(self):
return Builder.load_file('gui.kv')
if __name__ == '__main__':
GUI().run()