С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 07.03.2023
Сообщений: 2

Отдельно функция работает(Строка поиска по treeview), а если запускать эту функцию в другой функции - не меняется

07.03.2023, 19:58. Показов 1072. Ответов 1

Студворк — интернет-сервис помощи студентам
Пожалуйста, помогите!
Есть форма с treeview, она показывает данные из таблицы clients.db.
Так же есть кнопка удаления(работает), строка поиска и кнопка поиска.
Если запускать функцию clientsotru(), то строка поиска работает.
Если запускать функцию clientsotru() по кнопке в функции sotrud(), форма открывается, кнопка удаления работает, а строка поиска нет.
В чем моя ошибка, подскажите пожалуйста.

Все прилагается в архиве.

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
from tkinter import *
import sqlite3
from tkinter import messagebox as mb
from tkinter import ttk
 
 
clr = "black"
 
 
def sotrud():
 
    root2 = Tk()
    root2.title('Сотрудник')
    root2.geometry('650x300')
    root2.resizable(width=0, height=0)
    root2["bg"] = clr
 
    
    q4 = Button(root2, command=clientsotru, text="КЛИЕНТСКАЯ БАЗА")
    q4.pack()
 
    root2.mainloop()
 
def clientsotru():
    
    root = Tk()
    root.title('Сотрудник/Клиентская база')
    root.geometry('1300x400')
    root.resizable(width=0, height=0)
    root["bg"] = clr
    q = StringVar()
    FR23 = Frame(root, bg=clr)
    FR23.pack(side=TOP, fill="both")
 
    lb = Label(FR23, text="КЛИЕНТСКАЯ БАЗА", font = ("Century Gothic", 25), background=clr, fg="#ffffff")
    lb.pack(pady=10)
 
 
    def search():
        conn = sqlite3.connect('clients.db')
        cur = conn.cursor()
        cur.execute("SELECT * FROM client WHERE fio LIKE '%"+q.get()+"%'")
        rows = cur.fetchall()
        tree.delete(*tree.get_children())
        for i in rows:
            tree.insert('', 'end', values=i)
        conn.close()
 
    def delete():
        for selection_item in tree.selection():
            conn = sqlite3.connect('clients.db')
            cur = conn.cursor()
            cur.execute('''DELETE FROM client WHERE userid=?''', (tree.set(selection_item, '#1')))
            conn.commit()
            conn.close()
        selected_item = tree.selection()[0]
        tree.delete(selected_item)
        
    def connn():
        conn = sqlite3.connect('clients.db')
        cur = conn.cursor()
        cur.execute("SELECT * FROM client")
        rows = cur.fetchall()
        for row in rows:
            tree.insert("",END, values=row)
        conn.close()
 
    tree_frame = Frame(root)
    tree_frame.pack(pady=10)
    tree_scroll = Scrollbar(tree_frame)
    tree_scroll.pack(side=RIGHT, fill=Y)
    tree = ttk.Treeview(tree_frame, column=("column1", "column2", "column3", "column4","column5", "column6"), show='headings', yscrollcommand=tree_scroll.set)
    tree.heading("#1", text="Номер")
    tree.heading("#2", text="Фио")
    tree.heading("#3", text="Паспортные данные")
    tree.heading("#4", text="Тур")
    tree.heading("#5", text="Дата вылета")
    tree.heading("#6", text="Дата прилета")
    tree.pack()
    connn()
 
    button_frame = LabelFrame(root, bg=clr)
    button_frame.pack(expand="yes", padx=10)
    
    ent = Entry(button_frame, textvariable=q, font = ("Century Gothic", 15), fg="#ffffff", background="#355e7e")
    ent.grid(row=0, column=0, padx=10, pady=10)
 
    btn = Button(button_frame,command=search, text="Поиск", font = ("Century Gothic", 15), fg="#ffffff", background="#355e7e")
    btn.grid(row=0, column=1, padx=10, pady=10)
 
    bt = Button(button_frame,command=delete, text="Удалить", font = ("Century Gothic", 15), fg="#ffffff", background="#355e7e")
    bt.grid(row=0, column=3, padx=10, pady=10)
    root.mainloop()
 
 
sotrud()
Вложения
Тип файла: zip Папка.zip (1.9 Кб, 2 просмотров)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.03.2023, 19:58
Ответы с готовыми решениями:

Написать функцию, которая получает на вход имя другой функции и возвращает саму функцию, если она есть и null, если нет.
Написать функцию, которая получает на вход имя другой функции, а на выходе возвращает саму функцию, если она есть и null, если нет ...

Как можно отдельно вывести эту функцию?
Здравствуйте. onclick="$spBreakLinks.send(\'' + l + '\');" Нужно чтобы было примерно так: <input...

Если запускать метод Method1 из нового потока, то при первом вызове MoveTheShell (в цикле) не меняется значение Shell.Y
В общем: В методе Method1 есть цикл while (Possible) { Thread.Sleep(75); ...

1
2 / 1 / 1
Регистрация: 07.03.2023
Сообщений: 11
07.03.2023, 21:50
Лучший ответ Сообщение было отмечено jonntchib как решение

Решение

Проблема заключается в том, что вы создаете несколько экземпляров Tk() - корневых окон. Это может вызвать проблемы в работе приложения, включая неожиданное поведение виджетов, таких как строка поиска в вашем случае.

Вместо создания нового экземпляра Tk() в функции clientsotru(), используйте Toplevel() для создания второстепенного окна. Toplevel() позволяет создать новое окно внутри главного окна без создания нового корневого окна.

Измените следующую строку в функции clientsotru():
root = Tk()

На:
root = Toplevel()


Изменение этой строки должно решить проблему с строкой поиска в вашем приложении.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.03.2023, 21:50
Помогаю со студенческими работами здесь

Выход из функции, если эта работает в другой функции
Здравствуйте, у мне такая проблема. У меня есть одна функция, которая полностью контролирует всю менюшку в WinConsoleAppl. И она...

Написать функцию для поиска самого длинного слова в строке. Строка – параметр функции. Язык С
Написать функцию для поиска самого длинного слова в строке. Строка – параметр функции. Помогите написать программу на языке Си....

Почему макрос работает, если создавать и запускать его в Командной строке, а если в пакетном файле, то нет?
Подскажите почему если вводить последовательно в командной строке DOSKEY npp="C:\Program Files\WinRAR\WinRAR.exe" а потом npp, то все...

если запускать приложение в вижуалке (ctrl + f5) то оно работает правильно, но если запустить через .exe файл - нет!
если запускать приложение в вижуалке (ctrl + f5) то оно работает правильно, но если запустить через .exe файл - нет! Что делать? Возможно...

Не работает функция после отработки другой функции
Здравствуйте. Написал код, но почему-то не работает одна функция, когда отработала вторая. Вот эти две функции. Они находятся в классе ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru