Форум сайта python.su
0
Создаю приложение на python-Tkinter для открытия и работы в SQlite. Множество раз столкнулся с трудностями, и вот опять. Нужно вывести данные из таблицы в программу. Не получается вывести определённое кол-во строк(пользователь вводит в entry сколько строк хочет вывести, программа выводит).
#Функция отображения данных таблицы def Tablel (): global s #s = sel.get() #Получаем из поля entry #s1 = int(s) q = 0 for i in range(9,25): list = root.grid_slaves(row = 1) for l in list: l.destroy() x = 10 z = 0 all_table = var.get() cursor.execute('SELECT * FROM {}'.format(all_table)) rows = cursor.fetchall() for row in rows: y = 0 x = x+1 z = z+1 for ro in row: if z>=+q or x <5: r = Entry() r.insert(0, ro) r.grid(row=x, column = y, sticky = "w", pady = 1) y = y+1 else: break q = q+s1 nex.bind(Tablel)
Офлайн
221
ну тут кладясь говнокода и антипеттернов. Хорошо что не 1 минуту выполняется.
Я как бы не знаю чем вам помочь, кроме как переделать все.
Одна из ключевых проблем что вы делаете выборку ВСЕХ элеменов в ЦИКЛЕ.
Офлайн
0
Исправил, может кому пригодится!!!
def Tablel (): global x s = int(sel.get()) q = 0 z = 0 x = 10 all_table = var.get() cursor.execute('SELECT * FROM {}'.format(all_table)) rows = cursor.fetchall() for row in rows: y = 0 x = x+1 z = z+1 if s==0: messagebox.showinfo('СУБД',('Заполните поле')) break for ro in row: r = Entry() r.insert(0, ro) r.grid(row=x, column = y, sticky = "w", pady = 1) y = y+1 if s==z: break
Офлайн