Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python kivy如何在TextInput中获取文本?_Python_Kivy_Textinput - Fatal编程技术网

Python kivy如何在TextInput中获取文本?

Python kivy如何在TextInput中获取文本?,python,kivy,textinput,Python,Kivy,Textinput,登录系统; 我有一个错误。如何在txt1中获取文本以及如何通过按钮进行更改 messageShow中第11行的文件“/home/hypermesh/Desktop/main.py” 如果self.txt1.text==“股票”: AttributeError:“Button”对象没有属性“txt1” #-*- coding: utf-8 -*- from kivy.app import App from kivy.uix.label import Label from kivy.uix.butt

登录系统; 我有一个错误。如何在txt1中获取文本以及如何通过按钮进行更改

messageShow中第11行的文件“/home/hypermesh/Desktop/main.py” 如果self.txt1.text==“股票”: AttributeError:“Button”对象没有属性“txt1”

#-*- coding: utf-8 -*-
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.popup import Popup
from kivy.uix.textinput import TextInput
from kivy.uix.gridlayout import GridLayout
from kivy.uix.widget import Widget

def messageShow(self):
    if self.txt1.text == "stock":
        pop=Popup(text="yes")
    else:
        pop=Popup(text="error")

class SimpleKivy(App):

    def build(self):
        grid=GridLayout(rows=3, cols=2)
        lbl1=Label(text="ID :",italic=True, bold=True)
        lbl2=Label(text="Password :",italic=True, bold=True)
        txt1=TextInput(multiline=False, font_size=50)
        txt2=TextInput(multiline=False, password=True)
        btn1=Button(text="Exit",italic=True)
        btn2=Button(text="OK",italic=True)

        btn2.bind(on_press=messageShow)

        grid.add_widget(lbl1)
        grid.add_widget(txt1)
        grid.add_widget(lbl2)
        grid.add_widget(txt2)
        grid.add_widget(btn1)
        grid.add_widget(btn2)
        return grid

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

你做得对。。。但您必须保存对以后要访问的anthing的引用(通常将其附加到self)

那么您的其他函数应该可以正常工作(除了方法应该是类的一部分…)

另一种选择是使用lambdas来调用它

def messageShow(message):
     print "GOT MESSAGE:",message

class SimpleKivy(App):
     def __init__(self,...):
         txt1 = TextInput(...)
         ...
         btn.bind(on_press=lambda *a:messageShow(txt1.text))
在本例中,txt1位于变量范围内,能够将其字符串传递给messageShow

thx此代码正在工作:)

class SimpleKivy(App):
    def messageShow(self,evt):
        if self.txt1.text == "stock":
            pop=Popup(text="yes")
        else:
            pop=Popup(text="error")

    def build(self):
        grid=GridLayout(rows=3, cols=2)
        lbl1=Label(text="ID :",italic=True, bold=True)
def messageShow(message):
     print "GOT MESSAGE:",message

class SimpleKivy(App):
     def __init__(self,...):
         txt1 = TextInput(...)
         ...
         btn.bind(on_press=lambda *a:messageShow(txt1.text))
def messageShow(message):
    if message == "stock":
        btn3=Button(text='Close me!')
        pop=Popup(content=btn3, title='Information Message !')
        pop.open()
        btn3.bind(on_press=pop.dismiss)

    else:
        btn3=Button(text='Exit')
        pop=Popup(content=btn3, title='Information Message !')
        pop.open()
        btn3.bind(on_press=pop.dismiss)

class LoginScreen(GridLayout):
    def __init__(self):
        super(LoginScreen, self).__init__()
        self.rows=3
        self.cols=2
        lbl1=Label(text="ID :",italic=True, bold=True)
        lbl2=Label(text="Password :",italic=True, bold=True)
        txt1=TextInput(multiline=False, font_size=50)
        txt2=TextInput(multiline=False, password=True)
        btn1=Button(text="Exit",italic=True)
        btn2=Button(text="OK",italic=True)
        btn2.bind(on_press=lambda *a:messageShow(txt1.text))
        self.add_widget(lbl1)
        self.add_widget(txt1)
        self.add_widget(lbl2)
        self.add_widget(txt2)
        self.add_widget(btn1)
        self.add_widget(btn2)

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

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