AttributeError: 'NoneType' для селена - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть ошибка в моем коде, я хочу получить или напечатать текст продукта, но когда я запустил его, он дал мне ошибку.

вот мой код:

import kivy
from kivy.properties import ObjectProperty
from selenium import webdriver
import requests
from selectorlib import Extractor
from selenium.webdriver.common.keys import Keys
from kivymd.app import MDApp
from kivy.app import App
from kivy.lang import Builder

KV = '''
BoxLayout:
    product: product
    size_hint: .8, .8
    pos_hint: {"center_x": .5, "center_y": .5}
    spacing: dp(100)
    orientation: "vertical"
    MDTextFieldRound:
        id: product
        hint_text: 'Enter a product'
        icon_left: 'magnify'
        on_text_validate: app.System()

'''


class Main(MDApp):
    def build(self):
        return Builder.load_string(KV)

    product = ObjectProperty(None)

    def System(self):
        print(self.product.text)


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

это всегда давало мне следующую ошибку

   File "C:/Users/Yesnia/Desktop/PYTHON/Apps development/App/App_Checking_Store.py", line 34, in 
   System
   print(self.product.text)
   AttributeError: 'NoneType' object has no attribute 'text'

помогите мне пожалуйста

1 Ответ

0 голосов
/ 11 февраля 2020

Таким образом, вы строите свою строку kv, но у вас нет возможности ссылаться на нее. Есть много способов исправить ситуацию, вот пример.

KV = '''
BoxLayout:
    ###product: product ### this does not achieve anything, you're just giving
    #some generic box layout a product attribute. this does not assign the App attribute.
    size_hint: .8, .8
    pos_hint: {"center_x": .5, "center_y": .5}
    spacing: dp(100)
    orientation: "vertical"
    MDTextFieldRound:
        id: product
        hint_text: 'Enter a product'
        icon_left: 'magnify'
        on_text_validate: app.System()

'''


class Main(MDApp):
    product = ObjectProperty(None)
    my_kv = None
    def build(self):
        self.my_kv = Builder.load_string(KV)
        self.product = self.my_kv.ids.product
        return self.my_kv

    def System(self):
        print(self.product.text)

обратите внимание на комментарий, который я оставил в вашей строке kv, добавление нового атрибута my_kv в ваш класс приложения и изменения, которые я внес Сделано в вашей функции сборки.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...