Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Обновление данных в treeview из БД [RSS Feed]

#1 Март 15, 2017 20:49:39

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Обновление данных в treeview из БД

Feelgood
Какой-то клоун писал, если честно. Ошибка на ошибке…

Офлайн

#2 Март 15, 2017 21:07:46

Feelgood
Зарегистрирован: 2016-08-04
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Обновление данных в treeview из БД

4kpt_V
Вы имеете введу сделать так:

4. При передаче в обработчик зря сразу конвертируете в типы. Пусть обработчик сам на себя возьмет эти задачи. Ну и зачем передавать их явно. Вы же уже их сделали атрибутами объекта (self.entryDescription и т.п.).

 self.btnOk.bind('<Button-1>', lambda event: self.insert_data(self.entryDescription.get(),
                                                                     self.combobox.get(),
                                                                     self.entryMoney.get()))

Отредактировано Feelgood (Март 15, 2017 21:08:03)

Офлайн

#3 Март 15, 2017 22:01:09

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Обновление данных в treeview из БД

Нет

 #
        self.btnOk.bind('<Button-1>', self.insert_data)
        self.slave.grab_set()
        self.slave.focus_set()
        self.slave.wait_window()
def insert_data(self, event):
        print(self.entryDescription.get())
        c.execute('''INSERT INTO finance(description, costs, sum) VALUES (?, ?, ?)''', (description, costs, total))
        conn.commit()
        '''conn.close()'''
        # call main.add_data
        self.main.add_data((description, costs, total))
        self.slave.destroy()

Офлайн

#4 Март 16, 2017 10:42:11

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Обновление данных в treeview из БД

Feelgood
По пунктам все понятно?

Офлайн

#5 Март 16, 2017 21:35:04

Feelgood
Зарегистрирован: 2016-08-04
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Обновление данных в treeview из БД

4kpt_V

1. Наследоваться желательно от чего-то, тогда можно будет этот виджет размещаться как элемент (как кнопку, например). Рекомендую рамку. Она, если надо, сама себе создаст root, если забыли передать (передали None).

6. Не принято создание писать в __init__. Лучше завести какой-то метод-инициатор.

С этими пунктами не всё понятно, я так понимаю необходимо основательно взятся за теорию ООП. С наскока, как у меня, на более/менее адекватный результат не стоит рассчитывать…

Офлайн

#6 Март 16, 2017 21:36:40

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Обновление данных в treeview из БД

Это не ООП. Это больше по Tkinter. Чтение по ООП тут не поможет вовсе

Офлайн

#7 Март 16, 2017 21:49:08

Feelgood
Зарегистрирован: 2016-08-04
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Обновление данных в treeview из БД

В первом томе Лутца не встречал чтоб такое поясняли или был не внимателен.
Если можно чуть более конкретнее.

Отредактировано Feelgood (Март 16, 2017 21:51:06)

Офлайн

#8 Март 16, 2017 22:32:58

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Обновление данных в treeview из БД

Да легко.

Смотрим сюда:

 #
import tkinter
#
class MyWidget(tkinter.Frame):
    def __init__(self, root, *attr, **kwargs):
        super().__init__(self, root, *attr, **kwargs)
        self.init_widget()
    def init_widget(self):
        button_ops = tkinter.Button(self, text="ops")
        button_ops.pack()
        button_ops.bind("<Button-1>", self.callback)
        button_ups = tkinter.Button(self, text="ups")
        button_ups.pack()
        button_ups.bind("<Button-1>", self.callback)
   def callback(self, event):
        print("button:", event.widget["text"])
#
if __name__ == "__main__":
    root = tkinter.Tk()
    my_widget = MyWidget(root)
    my_widget.pack()
    root.mainloop()

Фактически получается, что мы создали виждет из двух кнопок. Он вообще может быть размещен где угодно как обычная кнопка или любой другой виджет. Упаковывать его можно теперь тоже как угодно любым методом. Frame “защищает” разграничивая внутренний упаковщик и внеший.

Отредактировано 4kpt_V (Март 16, 2017 22:34:48)

Офлайн

#9 Март 17, 2017 19:39:28

Feelgood
Зарегистрирован: 2016-08-04
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Обновление данных в treeview из БД

Чем плох такой импорт?

 from tkinter import *
from tkinter import ttk

Отредактировано Feelgood (Март 17, 2017 19:40:04)

Офлайн

#10 Март 17, 2017 19:59:25

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Обновление данных в treeview из БД

Офлайн

  • Начало
  • » GUI
  • » Обновление данных в treeview из БД[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version