2016-06-08 4 views
3

나는 textinput 키비 앱을 가지고 있으며 내 스마트 폰에 숫자 키보드를 보여주고 싶습니다. 나는 그것에 대해 읽고 있었고 나는 재산과 함께 input_type=number 나는 올바른 결과를 얻을 수 있다고 생각하지만 kivy 업데이 트가 요즘 작동하지 않는다는 것을 깨달았다. 내 textinput에 포커스가있을 때 어떻게 숫자 키보드를 얻을 수 있습니까? 가로 모드의 앱을 사용하면 유용 할 수도 있고 키보드가 화면 절반 정도 차지할 수도 있습니다. 내가 생각내 kivy 앱에 숫자 키보드 설정 python

from kivy.app import App 
from kivy.uix.label import Label 
from kivy.uix.gridlayout import GridLayout 
from kivy.uix.textinput import TextInput 
from kivy.uix.button import Button 
from kivy.uix.screenmanager import ScreenManager, Screen 
from kivy.core.window import Window 


class LoginScreen(GridLayout): 
    def __init__(self,**kwargs): 
     super(LoginScreen, self).__init__(**kwargs) 
     self.cols=2 
     self.add_widget(Label(text='Subject')) 
     self.add_widget(Label(text='')) 
     self.add_widget(Label(text='1')) 
     self.add_widget(TextInput(multiline=False)) 
     self.add_widget(Label(text='2')) 
     self.add_widget(TextInput(multiline=False)) 
     self.add_widget(Label(text='3')) 
     self.add_widget(TextInput(multiline=False)) 
     self.add_widget(Label(text='4')) 
     self.add_widget(TextInput(multiline=False)) 
     b1=Button(text='Exit',background_color=[0,1,0,1],height=int(Window.height)/9.0) #doesn't work properly 
     self.add_widget(b1) 
     b2=Button(text='Run',background_color=[0,1,0,1],height=int(Window.height)/9.0) #doesn't work properly 
     self.add_widget(b2) 
     b1.bind(on_press=exit) 




class SimpleKivy(App): 
    def build(self): 
     return LoginScreen() 


if __name__=='__main__': 
    SimpleKivy().run() 
+0

일부 코드를 표시하십시오! –

+2

@UlfGjerdingen 코드로 질문을 편집했습니다. –

답변

0

조금 늦게, BU 어쩌면 누군가가 내일을 찾습니다이다 : 다음은 코드가 있습니까.

self.add_widget (의 TextInput (여러 = 거짓, INPUT_TYPE = '수'))

내가 당신을 제안 :

는 예를 들어, 귀하의 경우에, 당신의 TextInput의 INPUT_TYPE의 때에 프로퍼티를 변경해야 사실인가 그 주문에 대한 새로운 맞춤 위젯을 만들려면 다음과 같이 maxdigits 속성을 구현하는 Android 컴퓨터 및 데스크톱에서 작동합니다.

class IntegerInput(TextInput): 
    def __init__(self, **kwargs): 
     super(IntegerInput, self).__init__(**kwargs) 
     self.input_type = 'number' 

    def insert_text(self, substring, from_undo=False): 
     if substring.isnumeric(): 
      if hasattr(self, "maxdigits"): 
       if len(self.text) < self.maxdigits: 
        return super(IntegerInput,self).insert_text(substring, from_undo=from_undo) 
      else: 
       return super(IntegerInput, self).insert_text(substring, from_undo=from_undo)