1 Востаннє редагувалося koala (15.12.2022 09:52:44)

Тема: програма, що складається з двох списків Listbox.

Доброго дня. Допоможіть будь ласка дописати домашку сину. Знайшов за опомогою Гугла та Ютуба в цілому все рішення, окрім останньго пункту.
ЗАВДАННЯ. Напишіть програму, що складається з двох списків Listbox.
Перший список містить перелік товарів, другий — перелік покупок. При натисканні на одну кнопку товар має переходити з одного списку в інший. При натисканні на іншу кнопку — повертатися (людина передумала купувати). Передбачити можливість множинного вибору елементів списку і їх переміщення.

from tkinter import *
root = Tk()
root.title('Покупки')
root.geometry('400x200+500+300')
def toSecond():
    selectToSecond = lbox1.curselection()
    for i in selectToSecond:
        lbox2.insert(END, lbox1.get(i))
    for i in reversed(selectToSecond):
        lbox1.delete(i)
def toFirst():
    selectToFirst = lbox2.curselection()
    for i in selectToFirst:
        lbox1.insert(END, lbox2.get(i))
    for i in reversed(selectToFirst):
        lbox2.delete(i)
lbox1 = Listbox(selectmode=EXTENDED)
for i in ["ЯБЛУКА", "БАНАНИ", "МОРКВА", "ХЛІБ", "МОЛОКО", "КАВА", "ЧАЙ", "ЦУКОР", "ЧІПСИ", "ЦУКЕРКИ"]: 
    lbox1.insert(0,i)
lbox1.pack(side=LEFT,anchor="c", padx=5, pady=5)
lbox2 = Listbox(selectmode=EXTENDED)
lbox2.pack(side=RIGHT,anchor="c", padx=5, pady=5)
f = Frame()
f.pack(side=LEFT, padx=10)
Button(f, text=">>>", command=toSecond, width=40).pack(fill=X)
Button(f, text="<<<", command=toFirst, width=40).pack(fill=X)
lab1 = Label(root, text = 'Кількість покупок:')
lab1.place(x = 150, y = 130)

lab2 = label(root, text = lbox_2.size())
lab1.place(x = 160, y = 150)
k = lbox2.size()
lab2.config(text = str(k))
root.mainloop()
Від модератора: щось незрозуміле

Работает все до пустой строки. Ею предусмотрено показ числом сколко товаров вібрано в 2 инбоксе.
поусловию задания такое.....

Додайте віджет lab1 класу Label із заголовком Кількість покупок і віджет lab2 класу Label для виведення кількості елементів у списку box2.
Додайте до описів функцій оператори для зміни значення атрибуту text
віджета lab2 на значення box_2.size().
k = box2.size() lab2.config(text = str(k))
Підскажіть буль ласка де я помилився?

2

Re: програма, що складається з двох списків Listbox.

Від модератора: повідомлення виділене в окрему тему відповідно до п. 3.6 Правил.
Будь ласка, опишіть проблему відповідно до п.1.1 Правил, якщо хочете, щоб вам допомогли.

3

Re: програма, що складається з двох списків Listbox.

А де ви lab2 на форму додаєте?

4

Re: програма, що складається з двох списків Listbox.

koala написав:

А де ви lab2 на форму додаєте?

Згідно умови підручника цифра повинна стояти нижче фрази КІЛЬКІСТЬ ПОКУПОК

5

Re: програма, що складається з двох списків Listbox.

Ні, я питаю - де в коді? Ви бачите рядок, яким ви намагаєтеся додати lab2 на форму? Якщо так - покажіть мені, якщо ні - додайте. Доки ви на форму його не додасте, його на формі і не буде, логічно?

Подякували: leofun011

6

Re: програма, що складається з двох списків Listbox.

koala написав:

Ні, я питаю - де в коді? Ви бачите рядок, яким ви намагаєтеся додати lab2 на форму? Якщо так - покажіть мені, якщо ні - додайте. Доки ви на форму його не додасте, його на формі і не буде, логічно?

Намагаюсь тут
lab2 = label(root, text = lbox_2.size()) - перша після пробілу. до нього все працює.

7 Востаннє редагувалося koala (15.12.2022 13:57:34)

Re: програма, що складається з двох списків Listbox.

Ну гаразд, мені ліньки розжовувати.

lab2 = Label(root, text = lbox2.size())
lab2.place(x = 160, y = 150)

Велика "L" у Label, lbox2 без _, і lab2.place, а не lab1.place.

І так, значення в lab2 треба змінювати у функціях, а не один раз виставляти.

8

Re: програма, що складається з двох списків Listbox.

Велике дякую, значення з'явилось у полі. Залишилось ще розібратись де помилка чому воно не рахує кількість у 2 боксі.

lab2 = Label(root, text = lbox2.size())
lab2.place(x = 190, y = 150)
k = lbox2.size()
lab2.config(text = str(k))

9

Re: програма, що складається з двох списків Listbox.

qiper08 написав:

Велике дякую, значення з'явилось у полі. Залишилось ще розібратись де помилка чому воно не рахує кількість у 2 боксі.

lab2 = Label(root, text = lbox2.size())
lab2.place(x = 190, y = 150)
k = lbox2.size()
lab2.config(text = str(k))

Підскажіть будь ласка де помилка? Чому не відображає кількість товарів, а постійно 0.

10

Re: програма, що складається з двох списків Listbox.

koala написав:

значення в lab2 треба змінювати у функціях, а не один раз виставляти.