Форум сайта python.su
Feelgood
Какой-то клоун писал, если честно. Ошибка на ошибке…
Офлайн
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)
Офлайн
Нет
# 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()
Офлайн
Feelgood
По пунктам все понятно?
Офлайн
4kpt_V
1. Наследоваться желательно от чего-то, тогда можно будет этот виджет размещаться как элемент (как кнопку, например). Рекомендую рамку. Она, если надо, сама себе создаст root, если забыли передать (передали None).
6. Не принято создание писать в __init__. Лучше завести какой-то метод-инициатор.
Офлайн
Это не ООП. Это больше по Tkinter. Чтение по ООП тут не поможет вовсе
Офлайн
В первом томе Лутца не встречал чтоб такое поясняли или был не внимателен.
Если можно чуть более конкретнее.
Отредактировано Feelgood (Март 16, 2017 21:51:06)
Офлайн
Да легко.
Смотрим сюда:
# 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()
Отредактировано 4kpt_V (Март 16, 2017 22:34:48)
Офлайн
Чем плох такой импорт?
from tkinter import * from tkinter import ttk
Отредактировано Feelgood (Март 17, 2017 19:40:04)
Офлайн
Офлайн