Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.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 按钮打印文本输入不起作用_Python_Kivy - Fatal编程技术网

Python 按钮打印文本输入不起作用

Python 按钮打印文本输入不起作用,python,kivy,Python,Kivy,整个代码运行良好。但是当你去: student > Add New student > > Fill all columns of new student > then submit 它不起作用了,我也弄不清问题所在。下面是下面的代码。任何帮助都将不胜感激 from kivy.app import App from kivy.lang import Builder from kivy.uix.screenmanager import ScreenManager, Scr

整个代码运行良好。但是当你去:

student > Add New student > > Fill all columns of new student > then submit
它不起作用了,我也弄不清问题所在。下面是下面的代码。任何帮助都将不胜感激

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen ,FadeTransition
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
import csv
from kivy.uix.textinput import TextInput

Builder.load_string("""
<MenuScreen>:
    BoxLayout:
        Button:
            text: 'Teacher'
            on_press: root.manager.current = 'screen1'
        Button:
            text: 'Student '
            on_press:root.manager.current = 'screen2'
        Button:
            text: 'Quit'

<Screen1>:
    BoxLayout:

    Button:
        text: 'Teacher Info'
        #on_press:root.manager.current = 'login'
    Button:
        text: 'Teacher Attandance'
    Button:
        text: 'Add New Teacher'
        on_press:root.manager.current = 'add_teacher'
    Button:
        text: 'Back'
        on_press:root.manager.current ='menu'


<add_new_teacher>:
    GridLayout:
        cols:2

    Label:
        text:'Name'
    TextInput:
        id: name_input
        multiline: False

    Label:
        text:'Father Name'
    TextInput:
        id: name_input
        multiline: False

    Label:
        text: 'Mother Name'
    TextInput:
        id: name_input
        multiline: False

    Label:
        text: 'Class'
    TextInput:
        id: name_input
        multine: False

    Label:
        text:'Roll no.'
            text: 'Student Info'
            on_press:root.csv_std()
        Button:
            text: 'Student Attandance'
            # on_press:root.manager.current ='login'
        Button:
            text: 'Add New Student'
            on_press:root.manager.current = 'add_student'

        Button
            text: 'Back'
            on_press:root.manager.current = 'menu'

<add_new_student>:
    GridLayout:
        cols:2

        Label:
            text:'Name'
        TextInput:
            id: self.name
            multiline: False

        Label:
            text:'Father Name'
        TextInput:
            id: self.fname
            multiline: False

        Label:
            text: 'Mother Name'
        TextInput:
            id: self.mname
            multiline: False

        Label:
            text: 'Class'
        TextInput:
            id: self.c
            multine: False

        Label:
            text:'Roll no.'
        TextInput:
            id: self.r
            multiline:False


        Button:
            text:'Print'


        Button:
            text:'Submit'
            on_press:root.print_text()

        Button:
            text:'Back'
            on_press:root.manager.current= 'screen2'

""")

# Declare both screens
class MenuScreen(Screen):
    pass
class add_new_teacher(Screen):

    pass 
class Screen1(Screen):
    pass
class Screen2(Screen):
    def csv_std(self):
        f = open("a.csv", 'r')
        reader = csv.reader(f)
        for row in reader:
            print(" ".join(row))
    pass
class add_new_student(Screen):
    def print_text(self):
        for child in reversed(self.children):
            if isinstance(child, TextInput):
                print child.text
    pass


# Create the screen manager
sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(add_new_teacher(name='add_teacher'))
sm.add_widget(add_new_student(name='add_student'))
sm.add_widget(Screen1(name='screen1'))
sm.add_widget(Screen2(name='screen2'))

class TestApp(App):

    def build(self):
        return sm

if __name__ == '__main__':
    TestApp().run()
从kivy.app导入应用
从kivy.lang导入生成器
从kivy.uix.screenmanager导入screenmanager、Screen、FadeTransition
从kivy.uix.button导入按钮
从kivy.uix.gridlayout导入gridlayout
导入csv
从kivy.uix.textinput导入textinput
生成器。加载\u字符串(“”)
:
盒子布局:
按钮:
课文:“老师”
按:root.manager.current='screen1'
按钮:
文字:“学生”
按:root.manager.current='screen2'
按钮:
文本:“退出”
:
盒子布局:
按钮:
文本:“教师信息”
#按:root.manager.current='login'
按钮:
课文:“教师重视”
按钮:
文本:“添加新教师”
按:root.manager.current='add\u teacher'
按钮:
文本:“返回”
按:root.manager.current='menu'
:
网格布局:
科尔斯:2
标签:
文本:'Name'
文本输入:
id:name\u输入
多行:False
标签:
文字:“父亲的名字”
文本输入:
id:name\u输入
多行:False
标签:
文字:“母亲的名字”
文本输入:
id:name\u输入
多行:False
标签:
文本:“类”
文本输入:
id:name\u输入
多音:错
标签:
文字:“卷号”
文本:“学生信息”
按:root.csv\u std()
按钮:
文字:“学生附件”
#按:root.manager.current='login'
按钮:
文本:“添加新学生”
按:root.manager.current='add\u student'
按钮
文本:“返回”
按:root.manager.current='菜单'
:
网格布局:
科尔斯:2
标签:
文本:'Name'
文本输入:
id:self.name
多行:False
标签:
文字:“父亲的名字”
文本输入:
id:self.fname
多行:False
标签:
文字:“母亲的名字”
文本输入:
id:self.mname
多行:False
标签:
文本:“类”
文本输入:
id:self.c
多音:错
标签:
文字:“卷号”
文本输入:
id:self.r
多行:False
按钮:
文本:“打印”
按钮:
正文:“提交”
按:root.print\u text()
按钮:
文本:'返回'
按:root.manager.current='screen2'
""")
#声明两个屏幕
类菜单屏幕(屏幕):
通过
班级添加新教师(屏幕):
通过
类别屏幕1(屏幕):
通过
第2类屏幕(屏幕):
def csv_标准(自身):
f=打开(“a.csv”,“r”)
读卡器=csv。读卡器(f)
对于读取器中的行:
打印(“.”连接(行))
通过
班级添加新学生(屏幕):
def打印文本(自身):
对于处于反转状态的儿童(self.children):
如果isinstance(子项,文本输入):
打印child.text
通过
#创建屏幕管理器
sm=屏幕管理器()
sm.add_小部件(菜单浏览(name='menu'))
sm.add_小部件(add_new_teacher(name='add_teacher'))
sm.add_小部件(add_new_student(name='add_student'))
sm.add_小部件(Screen1(name='Screen1'))
sm.add_小部件(Screen2(name='Screen2'))
类TestApp(应用程序):
def生成(自):
返回sm
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
TestApp().run()

您的代码格式很糟糕,但至少您没有使用反勾号。对于将来的情况,请复制并粘贴您希望在此处显示的整个示例,然后选择该示例(整个),然后按
Ctrl+K
,这将缩进所有选定的行,使其看起来正常

代码的工作方式与它应该的工作方式完全相同,因为
root.print_text()
目标是
add\u new\u student
类及其
子类
-而不是您想要访问的
GridLayout

编辑该行:
为反向(self.children[0].children]中的child:
您就可以开始了。:)

或者更有效的解决方案是将
屏幕
也作为一个布局,您可以通过继承
屏幕
和一些布局来实现,但要确保布局是第一位的:

kv:

<add_new_student>:
    cols:2

    Label:
        text:'Name'
:
科尔斯:2
标签:
文本:'Name'

您的代码格式很糟糕,但至少您没有使用反勾号。对于将来的情况,请复制并粘贴您希望在此处显示的整个示例,然后选择该示例(整个),然后按
Ctrl+K
,这将缩进所有选定的行,使其看起来正常

代码的工作方式与它应该的工作方式完全相同,因为
root.print_text()
目标是
add\u new\u student
类及其
子类
-而不是您想要访问的
GridLayout

编辑该行:
为反向(self.children[0].children]中的child:
您就可以开始了。:)

或者更有效的解决方案是将
屏幕
也作为一个布局,您可以通过继承
屏幕
和一些布局来实现,但要确保布局是第一位的:

kv:

<add_new_student>:
    cols:2

    Label:
        text:'Name'
:
科尔斯:2
标签:
文本:'Name'

我以前接受过,但由于互联网问题,它没有被选中。。。。谢谢你的邀请help@SheenaWadhwa不必担心:)@EL3PHANTEN即使没有公认的答案,问题也已“回答”状态。简单的向上投票就足够了。我以前接受过,但由于互联网问题,它没有被选中。。。。谢谢你的邀请help@SheenaWadhwa不必担心:)@EL3PHANTEN即使没有公认的答案,问题也已“回答”状态。简单的