Python& Kivy属性错误:

时间:2015-02-23 09:27:56

标签: python-2.7 kivy filechooser

我正在尝试使用kivy&amp ;;制作文件选择器代码客户端上的python&服务器库...其余部分代码工作正常,但给定部分给出属性错误“'ClientScreen'没有属性'openfile_from_filechooser'”

在哪一方面我犯了错误...我已经搜索了如何解决属性错误但没有一个工作...

class ClientScreen(Screen):
    def __init__(self, **kwargs):

        super(ClientScreen, self).__init__(**kwargs)

        def openfile(self, path, filename):
            f = open(os.path.join(path, filename[0]))
            print f.read()
            #self.clear_widgets()

        def selected(self, filename):
            print "selected: %s" % filename[0]

        def openfile_from_filechooser(self, filechooser):
            self.openfile(filechooser.path, filechooser.selection)

        def selected_from_filechooser(self, filechooser):
            self.selected(filechooser.selection)


        def terminate(instance):

            sys.exit()

        def data(instance):
            global IP
            global conn
            global host
            global port
            global address

            print("Inside Data")

            self.clear_widgets()

            print("Inside File Operation")

            button1 = Button(text = 'Open',size_hint = (None,None),pos = (0,0))
            self.add_widget(button1)
            button1.bind(on_release=partial(self.openfile_from_filechooser, filechooser))

            button2 = Button(text = 'Send',size_hint = (None,None),pos = (100,0))
            self.add_widget(button2)
            #button2.bind(on_release=partial(self.selected_from_filechooser, filechooser))
        def connection(instance):
            global IP
            global conn
            global host
            global port
            global address

            self.clear_widgets()
            text = IP.text
            print(text)
            self.add_widget(Label (text = text))
            print "Imported socket module"
            print "Imported sys module used for termination condition"
            conn = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
            print('Socket created')
            host = IP.text
            print "Host Name:",host

            port = 8000
            print "Port value accessed",port

            try:
                self.clear_widgets()
                address = (host,port)
                print('Value of Address:',address)
                print('Trying to connect...')
                print('Initiating TCP server connection')
                self.add_widget(Label(text = 'Connected....Press Next To Proceed...'))

                button1 = Button(text = 'Next',size_hint = (None,None),pos = (0,0))
                self.add_widget(button1)
                button1.bind(on_press = data)

            except socket.error as msg:
                self.clear_widgets()
                self.add_widget(Label(text = 'Sorry...Unable to create socket...press Finish to terminate...'))

                button2 = Button(text = 'Finish',size_hint = (None,None),pos = (0,0))
                self.add_widget(button2)
                button2.bind(on_press = terminate)

                print('Socket not created')


        def ip_addr(instance):
            global IP

            self.clear_widgets()

            self.add_widget(Label (text = "Enter the destination device's IP address"))
            IP = TextInput(multiline=False, size_hint = (1,0.1), pos = (0,200))
            print(IP.text)
            self.add_widget(IP)

            button1 = Button(text = 'Enter',size_hint = (None,None),pos = (0,0))
            self.add_widget(button1)
            button1.bind(on_press = connection)


        global IP
        self.add_widget(Label(text = 'Working as Client...Press Next to proceed'))
        button1 = Button(text = 'Next',size_hint = (None,None),pos = (0,0))
        self.add_widget(button1)
        button1.bind(on_press = ip_addr)

如果有人能说出我的错误在哪里,那将会非常有帮助。我该如何纠正这个错误

1 个答案:

答案 0 :(得分:1)

您的缩进错误,所有函数都在__init__而不是方法中声明。

您也不会调用super(ClientScreen, self).__init__(**kwargs),这会导致其他问题,因为这意味着屏幕和窗口小部件内部功能尚未初始化。