0

私は python の初心者で、現在kivy. 問題は、テキストを入力すると機能しないことです。その下では、それが機能しているかどうかを確認したいので、ポップアップを配置し、入力テキストが'a'printの場合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()
4

1 に答える 1

0

が機能しない理由は 2 つあります。

  1. ifイベントを処理するメソッドにある必要があります。show_popup
  2. 自体ではなく、textで比較する必要があります。の代わりに、使用する必要がありますLabelLabelself.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

于 2013-11-03T19:21:35.207 に答える