Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 28.10.2020
Сообщений: 10

Не могу понять как исправить ошибку

22.01.2023, 14:18. Показов 3279. Ответов 9

Студворк — интернет-сервис помощи студентам
Не пойму как исправить ошибку, добавил пару строк, вроде должно работать, но как обычно что-то пошло не так, задача проста, введенные данные должны просто попадать в таблицу,саму прогу и скрины с ошибкой и как оно выглядит в проге прилагаю, прошу помочь в данной проблеме.
Миниатюры
Не могу понять как исправить ошибку   Не могу понять как исправить ошибку   Не могу понять как исправить ошибку  

Не могу понять как исправить ошибку  
Вложения
Тип файла: rar прога.rar (3.09 Мб, 0 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.01.2023, 14:18
Ответы с готовыми решениями:

Не могу понять как исправить ошибку
Сейчас работаю над проектом в котором надо будет спарсить группы. Поэтому сейчас изучаю этот раздел. Хотел спарсить группы человека и...

Структура: Не могу понять, почему выдает ошибку и как собственно эту ошибку можно исправить?
Привет,не могу понять почему ошибку выдает и как сбстно эту ошибку можно исправить? #include <stdio.h> #include...

Не могу понять как исправить ошибку
Скачал библиотеки: ExcelDataReader, ExcelDataReader.DataSet; using System; using System.Collections.Generic; using System.Drawing;...

9
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
22.01.2023, 14:22
hugojakki, ну скрины мы не смотрим, так и в правилах написано, код ошибки целиком и приложи тот код что в ошибке указан. Проверь что в объекте Чайлд есть указанные атрибуты.
0
1 / 1 / 0
Регистрация: 28.10.2020
Сообщений: 10
22.01.2023, 15:12  [ТС]
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\dmc_6\AppData\Local\Programs\P ython\Python311\Lib\tkinter\__init__.py" , line 1948, in __call__
return self.func(*args)
^^^^^^^^^^^^^^^^
File "C:\Users\dmc_6\Desktop\Accounting\main. py", line 166, in <lambda>
self.entry_remains.get()))
^^^^^^^^^^^^^^^^^^
AttributeError: 'Child' object has no attribute 'entry_remains'

Добавлено через 4 минуты
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class Child(tk.Toplevel):
    def __init__(self):
        super().__init__(root)
        self.init_child()
        self.view = app
 
    def init_child(self):
        self.title('Добавить товар')
        self.geometry('400x220+400+300')
        self.resizable(False, False)
 
        label_description = tk.Label(self, text='Наименование')
        label_description.place(x=50, y=35)
 
        label_select = tk.Label(self, text='Категория')
        label_select.place(x=50, y=65)
 
        label_price = tk.Label(self, text='Цена: ')
        label_price.place(x=50, y=95)
 
        label_quantity = tk.Label(self, text='Количество, шт')
        label_quantity.place(x=50, y=125)
 
        label_remains = tk.Label(self, text='Остаток, шт')
        label_remains.place(x=50, y=155)
 
        self.entry_description = ttk.Entry(self)
        self.entry_description.place(x=200, y=35)
        
        self.entry_money = ttk.Entry(self)
        self.entry_money.place(x=200, y=95)
 
        self.combobox = ttk.Combobox(self, values=[u'Смартфоны', u'Планшеты', 'Ноутбуки',
                                                   'Жесткие диски', 'Видеокарты', 'Оперативная память',
                                                   'Мониторы', 'Блоки питания', 'Корпусы', 'Материнские платы'])
        self.combobox.current(0)
        self.combobox.place(x=200, y=65)
 
        self.entry_quantity = ttk.Entry(self)
        self.entry_quantity.place(x=200, y=125)
 
        self.entry_quantity = ttk.Entry(self)
        self.entry_quantity.place(x=200, y=155)
 
        btn_cancel = ttk.Button(self, text='Закрыть', command=self.destroy)
        btn_cancel.place(x=279, y=190)
 
        self.btn_ok = ttk.Button(self, text='Добавить')
        self.btn_ok.place(x=199, y=190)
        self.btn_ok.bind('<Button-1>', lambda event: self.view.records(self.entry_description.get(),
                                                                       self.combobox.get(),
                                                                       self.entry_money.get(),
                                                                       self.entry_quantity.get(),
                                                                       self.entry_remains.get()))
 
        self.grab_set()
        self.focus_set()
вот где ошибка
0
 Аватар для Semen-Semenich
5233 / 3478 / 1175
Регистрация: 21.03.2016
Сообщений: 8,306
22.01.2023, 15:17
hugojakki, блин в очках 3 раза код пересмотрел. атрибута entry_remains так и не нашел. питон врать не будет - Child' object has no attribute 'entry_remains'
0
1 / 1 / 0
Регистрация: 28.10.2020
Сообщений: 10
22.01.2023, 15:22  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
label_remains = tk.Label(self, text='Остаток, шт')
        label_remains.place(x=50, y=155)
 
 
        self.btn_ok = ttk.Button(self, text='Добавить')
        self.btn_ok.place(x=199, y=190)
        self.btn_ok.bind('<Button-1>', lambda event: self.view.records(self.entry_description.get(),
                                                                       self.combobox.get(),
                                                                       self.entry_money.get(),
                                                                       self.entry_quantity.get(),
                                                                       self.entry_remains.get()))
а это разве не оно?
0
 Аватар для Semen-Semenich
5233 / 3478 / 1175
Регистрация: 21.03.2016
Сообщений: 8,306
22.01.2023, 15:35
Цитата Сообщение от hugojakki Посмотреть сообщение
а это разве не оно?
где?
Python
1
2
3
4
5
        self.btn_ok.bind('<Button-1>', lambda event: self.view.records(self.entry_description.get(),
                                                                       self.combobox.get(),
                                                                       self.entry_money.get(),
                                                                       self.entry_quantity.get(),
                                                                       self.entry_remains.get()))
self.entry_description.get() - объект в 27 строке вашего кода
self.combobox.get() - объект в 33 строке вашего кода
self.entry_money.get() - объект в 30 строке вашего кода
self.entry_quantity.get() - объект в 39 строке вашего кода
self.entry_remains.get() - где ???
self.view.records(....) - тоже где?
1
1 / 1 / 0
Регистрация: 28.10.2020
Сообщений: 10
22.01.2023, 15:58  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
import tkinter as tk
from tkinter import ttk
import sqlite3
 
 
# Класс Main
class Main(tk.Frame):
    def __init__(self, root):
        super().__init__(root)
        self.init_main()
        self.db = db
        self.view_records()
 
# Главное окно
    def init_main(self):
        toolbar = tk.Frame(bg='beige', bd=2)
        toolbar.pack(side=tk.TOP, fill=tk.X)
 
        self.add_img = tk.PhotoImage(file='add.png')
        btn_open_dialog = tk.Button(toolbar, text='Добавить товар ', command=self.open_dialog, bg='beige',
                                    bd=0, compound=tk.TOP, image=self.add_img)
        btn_open_dialog.pack(side=tk.LEFT)
 
        self.update_img = tk.PhotoImage(file='edit.png')
        btn_edit_dialog = tk.Button(toolbar, text='Редактировать', bg='beige', bd=0, image=self.update_img,
                                    compound=tk.TOP, command=self.open_update_dialog)
        btn_edit_dialog.pack(side=tk.LEFT)
 
        self.delete_img = tk.PhotoImage(file='delete.png')
        btn_delete_dialog = tk.Button(toolbar, text='Удалить', bg='beige', bd=0, image=self.delete_img,
                                      compound=tk.TOP, command=self.delete_records)
        btn_delete_dialog.pack(side=tk.LEFT)
 
        self.search_img = tk.PhotoImage(file='search.png')
        btn_search = tk.Button(toolbar, text='Поиск', bg='beige', bd=0, image=self.search_img,
                               compound=tk.TOP, command=self.open_search_dialog)
 
        btn_search.pack(side=tk.LEFT)
 
 
        self.refresh_img = tk.PhotoImage(file='refresh.png')
        btn_refresh = tk.Button(toolbar, text='Обновить', bg='beige', bd=0, image=self.refresh_img,
                                compound=tk.TOP, command=self.view_records)
        btn_refresh.pack(side=tk.LEFT)
 
        self.tree = ttk.Treeview(self, columns=('ID', 'description', 'category', 'price', 'quantity', 'remains'), height=15, show='headings')
 
        self.tree.column('ID', width=30, anchor=tk.CENTER)
        self.tree.column('description', width=180, anchor=tk.CENTER)
        self.tree.column('category', width=130, anchor=tk.CENTER)
        self.tree.column('price', width=100, anchor=tk.CENTER)
        self.tree.column('quantity', width=100, anchor=tk.CENTER)
        self.tree.column('remains', width=100, anchor=tk.CENTER)
 
        self.tree.heading('ID', text='ID')
        self.tree.heading('description', text='Наименование')
        self.tree.heading('category', text='Категория')
        self.tree.heading('price', text='Цена, шт')
        self.tree.heading('quantity', text='Количество, шт')
        self.tree.heading('remains', text='Остаток, шт')
        
 
        self.tree.pack(side=tk.LEFT)
 
        scroll = tk.Scrollbar(self, command=self.tree.yview)
        scroll.pack(side=tk.LEFT, fill=tk.Y)
        self.tree.configure(yscrollcommand=scroll.set)
 
# Добавление данных
    def records(self, description, category, price, quantity, remains):
        self.db.insert_data(description, category, price, quantity, remains)
        self.view_records()
 
# Обновление данных
    def update_record(self, description, category, price, quantity, remains):
        self.db.c.execute('''UPDATE accounting  SET description=?, category=?, price=? WHERE ID=?''',
                          (description, category, price, self.tree.set(self.tree.selection()[0], '#1')))
        self.db.conn.commit()
        self.view_records()
 
# Вывод данных
    def view_records(self):
        self.db.c.execute('''SELECT * FROM accounting''')
        [self.tree.delete(i) for i in self.tree.get_children()]
        [self.tree.insert('', 'end', values=row) for row in self.db.c.fetchall()]
 
# Удаление данных
    def delete_records(self):
        for selection_item in self.tree.selection():
            self.db.c.execute('''DELETE FROM accounting WHERE id=? ''', (self.tree.set(selection_item, '#1'),))
            self.db.conn.commit()
            self.view_records()
 
# Поиск данных
    def search_records(self, description):
        description = ('%' + description + '%',)
        self.db.c.execute('''SELECT * FROM accounting WHERE description LIKE ?''', description)
        [self.tree.delete(i) for i in self.tree.get_children()]
        [self.tree.insert('', 'end', values=row) for row in self.db.c.fetchall()]
 
# Открытие дочернего окна
    def open_dialog(self):
        Child()
 
    def open_update_dialog(self):
        Update()
 
    def open_search_dialog(self):
        Search()
 
 
# Дочернее окно
class Child(tk.Toplevel):
    def __init__(self):
        super().__init__(root)
        self.init_child()
        self.view = app
 
    def init_child(self):
        self.title('Добавить товар')
        self.geometry('400x220+400+300')
        self.resizable(False, False)
 
        label_description = tk.Label(self, text='Наименование')
        label_description.place(x=50, y=35)
 
        label_select = tk.Label(self, text='Категория')
        label_select.place(x=50, y=65)
 
        label_price = tk.Label(self, text='Цена: ')
        label_price.place(x=50, y=95)
 
        label_quantity = tk.Label(self, text='Количество, шт')
        label_quantity.place(x=50, y=125)
 
        label_remains = tk.Label(self, text='Остаток, шт')
        label_remains.place(x=50, y=155)
 
        self.entry_description = ttk.Entry(self)
        self.entry_description.place(x=200, y=35)
        
        self.entry_money = ttk.Entry(self)
        self.entry_money.place(x=200, y=95)
 
        self.combobox = ttk.Combobox(self, values=[u'Смартфоны', u'Планшеты', 'Ноутбуки',
                                                   'Жесткие диски', 'Видеокарты', 'Оперативная память',
                                                   'Мониторы', 'Блоки питания', 'Корпусы', 'Материнские платы'])
        self.combobox.current(0)
        self.combobox.place(x=200, y=65)
 
        self.entry_quantity = ttk.Entry(self)
        self.entry_quantity.place(x=200, y=125)
 
        self.entry_quantity = ttk.Entry(self)
        self.entry_quantity.place(x=200, y=155)
 
 
        btn_cancel = ttk.Button(self, text='Закрыть', command=self.destroy)
        btn_cancel.place(x=279, y=190)
 
        self.btn_ok = ttk.Button(self, text='Добавить')
        self.btn_ok.place(x=199, y=190)
        self.btn_ok.bind('<Button-1>', lambda event: self.view.records(self.entry_description.get(),
                                                                       self.combobox.get(),
                                                                       self.entry_money.get(),
                                                                       self.entry_quantity.get(),
                                                                       self.entry_remains.get()))
 
        self.grab_set()
        self.focus_set()
 
 
# Класс обновления унаследованный от дочернего окна
class Update(Child):
    def __init__(self):
        super().__init__()
        self.init_edit()
        self.view = app
        self.db = db
        self.default_data()
 
 
    def init_edit(self):
        self.title('Редактировать товары')
        btn_edit = ttk.Button(self, text='Редактировать')
        btn_edit.place(x=180, y=190)
        btn_edit.bind('<Button-1>', lambda event: self.view.update_record(self.entry_description.get(),
                                                                          self.combobox.get(),
                                                                          self.entry_money.get(),
                                                                          self.entry_quantity.get(),
                                                                          self.entry_remains.get()))
        self.btn_ok.destroy()
 
 
    def default_data(self):
        self.db.c.execute('''SELECT * FROM accounting WHERE id=?''',
                          (self.view.tree.set(self.view.tree.selection()[0], '#1'),))
        row = self.db.c.fetchone()
        self.entry_description.insert(0, row[1])
        if row[2] != 'Смартфоны':
            self.combobox.current(1)
        self.entry_money.insert(0, row[3])
 
 
# Поиск по наименованию
class Search(tk.Toplevel):
    def __init__(self):
        super().__init__()
        self.init_search()
        self.view = app
 
    def init_search(self):
        self.title('Поиск')
        self.geometry('300x100+400+300')
        self.resizable(False, False)
 
        label_search = tk.Label(self, text='Поиск')
        label_search.place(x=50, y=20)
 
        self.entry_search = ttk.Entry(self)
        self.entry_search.place(x=105, y=20, width=150)
 
        btn_cancel = ttk.Button(self, text='Закрыть', command=self.destroy)
        btn_cancel.place(x=185, y=50)
 
        btn_search = ttk.Button(self, text='Поиск')
        btn_search.place(x=105, y=50)
        btn_search.bind('<Button-1>', lambda event: self.view.search_records(self.entry_search.get()))
        btn_search.bind('<Button-1>', lambda event: self.destroy(), add='+')
 
 
# Создание базы данных
class DB:
    def __init__(self):
        self.conn = sqlite3.connect('accounting.db')
        self.c = self.conn.cursor()
        self.c.execute(
            '''CREATE TABLE IF NOT EXISTS accounting (id integer primary key,description text, 
            category text, price real)''')
        self.conn.commit()
 
    def insert_data(self, description, category, price):
        self.c.execute('''INSERT INTO accounting (description, category, price) VALUES (?, ?, ?) ''',
                       (description, category, price))
        self.conn.commit()
 
 
# Основной код для запуска
if __name__ == "__main__":
    root = tk.Tk()
    db = DB()
    app = Main(root)
    app.pack()
    root.title("Accounting")
    root.geometry("765x450+400+100")
    root.resizable(False, False)
    root.mainloop()

хорошо, вот весь код

Добавлено через 17 минут
всё увидел

теперь пишет это

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\dmc_6\AppData\Local\Programs\P ython\Python311\Lib\tkinter\__init__.py" , line 1948, in __call__
return self.func(*args)
^^^^^^^^^^^^^^^^
File "C:\Users\dmc_6\Desktop\Accounting\main. py", line 163, in <lambda>
self.btn_ok.bind('<Button-1>', lambda event: self.view.records(self.entry_description .get(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^
File "C:\Users\dmc_6\Desktop\Accounting\main. py", line 71, in records
self.db.insert_data(description, category, price, quantity, remains)
TypeError: DB.insert_data() takes 4 positional arguments but 6 were given
0
 Аватар для Semen-Semenich
5233 / 3478 / 1175
Регистрация: 21.03.2016
Сообщений: 8,306
22.01.2023, 16:02
Цитата Сообщение от hugojakki Посмотреть сообщение
весь код
это ничего не меняет. где объекты к которым вы пытаетесь обратиться в классе Child
self.entry_remains.get() - где ???
self.view.records(....) - тоже где?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
23.01.2023, 06:37
Цитата Сообщение от hugojakki Посмотреть сообщение
TypeError: DB.insert_data() takes 4 positional arguments but 6 were given
это уже другой вопрос и новая тема, а главное -все написано в ошибке, возьми и прямо переведи ее, ты справишься.
0
 Аватар для rim41
1045 / 313 / 78
Регистрация: 16.03.2020
Сообщений: 954
23.01.2023, 12:51
Welemir1, Можно вообще поступить жестоко: взять вот прямо и загуглить, а не писать на форум всё в 1 тему, сломать систему и перейти на следующую ступень эволюции программирования
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.01.2023, 12:51
Помогаю со студенческими работами здесь

Не могу понять, как исправить ошибку
Есть задание: &quot;Дано натуральное число N. Вычислить произведение первых N сомножителей: р = ...

Не могу понять как исправить ошибку
Есть программа: program new_element; const Ar : аггау of Integer = (11, 12, 13, 14, 15, 15, 16, 17, 18, 19); var i: Integer; ...

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

Не могу понять как исправить ошибку
#include &lt;vcl.h&gt; #pragma hdrstop #include &quot;Unit1.h&quot; //--------------------------------------------------------------------------- ...

Не могу понять как исправить ошибку
Здравствуйте. Только начала изучать асемблер. Написала программу используя Visual Studio и у меня выдало ошибку, которую я не понимаю как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru