Найти - Пользователи
Полная версия: Парсинг, KIVY DROP LIST
Начало » Центр помощи » Парсинг, KIVY DROP LIST
1
dradon
Привет всем, ребят помогите не могу понять, где косяк. Вот кусок Кода.
1.Я получаю данные с файла, split методом убираю пробелы и методом append добавляю в list_wes.
Далее я его разпарсиваю и помещаю в другой список ip_list. Все работает я проверял, вывод верный через print. Показывает Данные. Но почему то когда я создаю кнопки, а мне надо для каждого елемента создать ее, они не создаюся.!!!
Но если в ip_list указать явно елементы например
 ip_list=['192.168.0.1','192.168.0.10','192.168.0.14]
итд то все в норме, кнопки без проблем создаются.
Почему не создаются кнопки хотя данные в списке имеются ??

 list_wes = []
ip_list = []
def parser():
    cmd='ip dhcp-server lease print detail'
    ssh=paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(ip,port,username,password)
    stdin,stdout,stderr=ssh.exec_command(cmd)
    BOOK = stdout.readlines()
    res =''.join(BOOK)
    text = res.split()
    for i in text:
        list_wes.append(i)
    for x in list_wes:
        if x[0:8] == 'address=':
            ip_list.append(x[8:])
    print(ip_list)
#вывод списка 
['172.20.26.5', '172.20.26.6', '172.20.26.16', '172.20.26.17', '172.20.26.18', '172.20.26.20', '172.20.26.21', '172.20.26.32']
class Workscreen(Screen):
    def __init__(self, **kwargs):
        super(Workscreen, self).__init__(**kwargs)
        start = BoxLayout(orientation='vertical', size_hint=(0.4, 0.3), padding=8,
                          pos_hint={'top': 0.9, 'center_x': 0.5})
        drop_down = Button(text=str('Выберите Точку'), size_hint_y=None, height=70, on_press=self.drop)
        start.add_widget(drop_down)
        self.dropdown = DropDown(auto_dismiss=False)
        listas = ip_list
        for i in listas:
            btn = Button(text=i, size_hint_y=None, height=44)
            btn.bind(on_release=lambda btn: self.dropdown.select(btn.text))
            self.dropdown.add_widget(btn)
        self.add_widget(start)
    def drop(self, drop_down):
        self.dropdown.open(drop_down)
FishHook
в какой строке вы вызываете функцию parser?

dradon
FishHook
в какой строке вы вызываете функцию parser?
До того как перейти на экран Workscreen. Вот в этом куске
     def connect(self, instance):
        username.clear()
        username.append(self.login.text)
        password.clear()
        password.append(self.passwords.text)
        ip2 = str(ip[0])
        port2 = port
        username2 = str(username[0])
        password2 = str(password[0])
        command = os.system('ping '+ ip2 + ' -n 1')
        if command == 0:
            try:
                ssh = paramiko.SSHClient()
                ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
                ssh.connect(ip2, port2, username2, password2)
                shell = ssh.invoke_shell()
                parser()    #<<<<<<<вот вызов (иначе говоря список наполняется до того как перейти на экран)
                self.manager.current = 'workscreen'
            except paramiko.AuthenticationException:
                error = Button(text=str('     Данные не верны! \n Введите Логин и Пароль'), size_hint=(0.4, 0.3),
                               pos_hint={'top': 0.4, 'center_x': 0.5})
                self.add_widget(error)
                shell = None
        else:
            error2 = Button(text=str('Нет связи с хостом!'), size_hint=(0.4, 0.3),
                           pos_hint={'top': 0.4, 'center_x': 0.5})
            self.add_widget(error2)
    def callback(self, instance):
        username.clear()
        password.clear()
        ip.clear()
        self.login.text = ''
        self.passwords.text = ''
        self.manager.current = 'functionScreen'
dradon
Ребят в принципе я нашел причину, но не могу найти решение.
Если я сделаю кнопку и помещу в нее переменную с индексом то выбьет ошибку List out of range.
Но мне интересно ведь если я сделаю print(ip_list) то значения там все таки есть.
Вот и думу думаю ведь переменные то глобальные.
py.user.next
dradon
Ребят в принципе я нашел причину, но не могу найти решение.
Ты не описал задачу. Сначала опиши задачу без какого-либо кода. Далеко не факт, что твой подход для её решения вообще правильный.

Без описания задачи это выглядит так: “Я тут пишу какую-то вещь. Я примерно представляю, что я пытаюсь сделать. Написал вот этот код для решения этой вещи. Скажите, где у меня ошибка?”. Тут-то и возникает вопрос “а что ты пытаешься написать вообще, что за вещь?”

dradon
Парсинг, KIVY DROP LIST
Это ни о чём не говорит.
dradon
py.user.next
Ладно простите, проблему решил, я пытался вывести значения прям в функции парсинга.
Сделав функцию вывода глобальной я решил проблему.
ВСЕМ СПАСИБО
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB