繁体   English   中英

Python Kivy文本输入

[英]Python kivy text input

我是python的新手,现在用kivy做字典。 问题是当我键入文本时,它不起作用。 在下面,我只想检查它是否正常工作,所以我放了一些弹出窗口,如果输入文本为'a'则输出true 只是检查它是否正常工作,希望你们能帮助我,谢谢。

from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.lang import Builder
from kivy.uix.popup import Popup
from kivy.uix.bubble import Bubble

class CustomPopup(Popup):
    pass

class Diction(GridLayout):

    def __init__(self, **kwargs):
        super(Diction, self).__init__(**kwargs)
        self.cols=2
        self.add_widget(Label(text="Search"))
        self.search=TextInput(multiline=False)
        self.add_widget(self.search)
        if self.search=='A':
            print 'True'
        else:
            print 'False'
        self.add_widget(Button(text="click",on_press=self.show_popup))
    def show_popup(self, b):
        p = CustomPopup()
        p.open()

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

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

不能正常工作的原因有两个:

  1. if应该在处理事件的方法中,即show_popup
  2. 您应该比较Labeltext ,而不是Label本身。 代替self.search=='A' ,您应该使用self.search.text=='A'

这是更正的__init__show_popup代码:

class Diction(GridLayout):

    def __init__(self, **kwargs):
        super(Diction, self).__init__(**kwargs)
        self.cols=2
        self.add_widget(Label(text="Search"))
        self.search=TextInput(multiline=False)
        self.add_widget(self.search)
        self.add_widget(Button(text="click",on_press=self.show_popup))

    def show_popup(self, b):
        if self.search.text=='A':
            print 'True'
        else:
            print 'False'
        p = CustomPopup()
        p.open()

使用Kivy语言的替代方法

Kivy语言可以帮助您编写更简洁的代码。 您的代码可能如下所示:

from kivy.app import App
from kivy.uix.gridlayout import GridLayout
# DON'T forget to import Label!!!
from kivy.uix.label import Label
from kivy.uix.popup import Popup
from kivy.lang import Builder

Builder.load_string("""
<CustomPopup@Popup>:
    title: "My Custom Poput"    

<Diction@GridLayout>:
    cols: 2
    search: id_search
    Label:
        text: "Search"
    TextInput:
        id: id_search
    Button:
        text: "click"
        on_press: root.show_popup(self)
""")

class CustomPopup(Popup):
    pass

class Diction(GridLayout):    
    def show_popup(self, b):
        if self.search.text=='A':
            print 'True'
        else:
            print 'False'
    # You can send any content to the popup with the content attribute
    CustomPopup(content=Label(text=self.search.text)).open()

class MyApp(App):
    def build(self):
        return Diction()

它有助于使逻辑与接口分离。 你甚至可以保存在单独的文件,如果你使用load_file功能代替的load_string

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM