Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 29.03.2020
Сообщений: 59
1

Использование Grid для позиционирования таблицы и покрытия всей области приложения фрэймом

05.04.2023, 20:44. Показов 395. Ответов 0

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

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
 import mysql.connector  
    import config  
    from tkinter import ttk  
    import tkinter as tk  
    
    db = mysql.connector.connect(
        host=config.host,
        user=config.user,
        password=config.password,
        database=config.database
    )
    
    mycursor = db.cursor()
    
    mycursor.execute("DESCRIBE books")
    for x in mycursor:
        print(x)
    
    class LibraryDB:
        def __init__(self):
            self.root = tk.Tk()  
            self.root.geometry("1020x586")  
            self.root.title("Library")  
            self.root.resizable(False, False)
            self.root.iconbitmap("library.ico") 
            self.user_emoji = [":arrows_counterclockwise:"]
    
            s = ttk.Style()
            s.theme_create("MyStyle", parent="alt", settings={
                "TNotebook": {
                    "configure": {
                        "tabmargins": [2, 4, 2, 0],
                        "background": "peachpuff2"
                    }
                },
                "TNotebook.Tab": {
                    "configure": {
                        "padding": [14, 6],
                        "font": ('Open Sans', '9', 'bold'),
                        "background": "lavender",
                        "foreground": "black"
                    },
                    "map": {
                        "background": [("selected", "antiquewhite")]
                    },
                    "label": {"background": "white"}
                },
                "TFrame": {
                    "configure": {
                        "background": "antiquewhite"
                    }
                }
            })
            s.theme_use("MyStyle")
    
            
            self.main_frame = tk.Frame(self.root)
    
            self.main_frame.grid(row=0, column=0, sticky="nsew")
    
            self.tab_control = ttk.Notebook(self.main_frame)
    
            self.tab1 = ttk.Frame(self.tab_control)
            self.tab2 = ttk.Frame(self.tab_control)
            self.tab3 = ttk.Frame(self.tab_control)
            self.tab4 = ttk.Frame(self.tab_control)
            self.tab5 = ttk.Frame(self.tab_control)
            self.tab6 = ttk.Frame(self.tab_control)
            self.tab7 = ttk.Frame(self.tab_control)
            self.tab8 = ttk.Frame(self.tab_control)
    
            self.tab_control.add(self.tab1, text='Книги')
            self.tab_control.add(self.tab2, text='Автор книги')
            self.tab_control.add(self.tab3, text='Авторы')
            self.tab_control.add(self.tab4, text='Жанры книги')
            self.tab_control.add(self.tab5, text='Жанры')
            self.tab_control.add(self.tab6, text='Издания')
            self.tab_control.add(self.tab7, text='Читатели')
            self.tab_control.add(self.tab8, text='Выдача книг')
    
            self.tab_control.grid(row=0, column=0, columnspan=3, sticky="nsew")
    
            self.tab1.rowconfigure(0, weight=1)
            self.tab1.columnconfigure(0, weight=1)
    
       
            self.tab1_obj = FirstTab(self.tab1)
            self.tab2_obj = SecondTab(self.tab2)
    
    
    
    class FirstTab:
        def __init__(self, parent): 
            self.parent = parent  
    
        def frstframetab1(self):
            frame1 = tk.Frame(self.parent)
            # создаем лэйбл
            per_label = tk.Label(self.parent, text="Список книг", bg="antiquewhite",font=("Montserrat", 14))
            per_label.grid(row=0, column=0, padx=10, pady=10, sticky="W" )
            add_button = tk.Button(self.parent, text="Добавить", bg="thistle", width=9, font=("Montserrat", 10, "bold"))
            add_button.grid(row=0, column=0, padx=130, pady=0, sticky="W")
            del_button = tk.Button(self.parent, text="Удалить", bg="thistle", width=9, font=("Montserrat", 10, "bold"))
            del_button.grid(row=0, column=0, padx=160, pady=0, sticky="W")
            isbn_label = tk.Label(self.parent, text="ISBN",bg="antiquewhite", font=("Montserrat", 12))
            isbn_label.grid(row=2, column=0, padx=10, pady=10, sticky="W" )
            isbn_entry = tk.Entry(self.parent, bg="aliceblue", width=13).grid(row=2, column=0, padx=60, pady=10, sticky="W")
            name_label = tk.Label(self.parent, text="Название", bg="antiquewhite", font=("Montserrat", 12))
            name_label.grid(row=2, column=0, padx=153, pady=10, sticky="W")
            name_entry = tk.Entry(self.parent, bg="aliceblue", width=18).grid(row=2, column=0, padx=210, pady=10, sticky="W")
            author_label = tk.Label(self.parent, text="Автор", bg="antiquewhite", font=("Montserrat", 12))
            author_label.grid(row=2, column=0, padx=333, pady=10, sticky="W")
            author_entry = tk.Entry(self.parent, bg="aliceblue", width=15).grid(row=2, column=0, padx=390, pady=10, sticky="W")
            search_button = tk.Button(self.parent, text="Найти", bg="lightcyan", width=8, font=("Montserrat", 10))
            search_button.grid(row=2, column=0, padx=510, pady=10, sticky="W")
            inv_button = tk.Button(self.parent, text="Инвентарь", width=9, bg="powderblue", font=("Montserrat", 11))
            inv_button.grid(row=2, column=0, padx=664, pady=10, sticky="W")
            filauthor_button = tk.Button(self.parent, text="Фильтр по автору", width=25, bg="darksalmon", font=("Montserrat", 10))
            filauthor_button.grid(row=2, rowspan=2, column=0, padx=780, pady=10, sticky="se")
            filname_button = tk.Button(self.parent, text="Фильтр по названию", bg="darksalmon", width=25, font=("Montserrat", 10))
            filname_button.grid(row=3, column=0, padx=780, pady=50, sticky="se")
            filisbn_button = tk.Button(self.parent, text="Фильтр по ISBN", width=25, bg="darksalmon", font=("Montserrat", 10))
            filisbn_button.grid(row=3, rowspan=2, column=0, padx=780, pady=90, sticky="se")
            back_button = tk.Button(self.parent, text="<", bg="palegreen", width=4, font=("Arial", 8))
            back_button.grid(row=3, column=0, padx=780, pady=73, sticky="nw")
            next_button = tk.Button(self.parent, text=">", bg="palegreen", width=4, font=("Arial", 8))
            next_button.grid(row=3, column=0, padx=820, pady=73, sticky="nw")
            change_button = tk.Button(self.parent, text="Изменить", width=10, bg="plum2", font=("Montserrat", 10))
            change_button.grid(row=3, column=0, padx=780, pady=0, sticky="nw")
            save_button = tk.Button(self.parent, text="Сохранить", width=11, bg="palegreen1", font=("Montserrat", 10))
            save_button.grid(row=3, column=0, padx=780, pady=0, sticky="en")
            rollback_button = tk.Button(self.parent, text="Откат изменений", width=25, bg="skyblue", font=("Montserrat", 10))
            rollback_button.grid(row=3, column=0, padx=780, pady=35, sticky="n")
    
        def select_all_books(self):
            # Выполняем запрос к базе данных для получения всех книг
            # mycursor.execute("SELECT * FROM book")
            # rows = mycursor.fetchall()  # Получаем все строки результата запроса
    
            # Создаем таблицу для отображения информации о книгах
            table = ttk.Treeview(self.parent, columns=(
            'ISBN', 'Название', 'Издание', 'Город', 'Год', 'Кол-во страниц', 'Кол-во экземпляров'), show='headings')
            table.column('ISBN', width=40, anchor=tk.CENTER)
            table.column('Название', width=120, anchor=tk.CENTER)
            table.column('Издание', width=120, anchor=tk.CENTER)
            table.column('Город', width=100, anchor=tk.CENTER)
            table.column('Год', width=80, anchor=tk.CENTER)
            table.column('Кол-во страниц', width=120, anchor=tk.CENTER)
            table.column('Кол-во экземпляров', width=170, anchor=tk.CENTER)
            table.heading('ISBN', text='ISBN')
            table.heading('Название', text='Название')
            table.heading('Издание', text='Издание')
            table.heading('Город', text='Город')
            table.heading('Год', text='Год')
            table.heading('Кол-во страниц', text='Кол-во страниц')
            table.heading('Кол-во экземпляров', text='Кол-во экземпляров')
    
            # # Заполняем таблицу данными из базы данных
            # for row in row:
            #     table.insert('', tk.END, values=row)
    
            # Помещаем таблицу на фрейм
            table.grid(row=3, column=0, columnspan=4, padx=10, pady=0, sticky="W")
    
    
    
    class SecondTab:
        def __init__(self, parent):
            self.parent = parent
    
        def frstframetab2(self):
            # создаем лэйбл
            per_label = tk.Label(self.parent, text="Список книг")
            per_label.grid(row=0, column=0, padx=5, pady=5, sticky="w")
    
    
    if __name__ == '__main__':
        library_db = LibraryDB()
        library_db.tab1_obj.frstframetab1()
        library_db.tab1_obj.select_all_books()
        library_db.tab2_obj.frstframetab2()
        library_db.root.mainloop()
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2023, 20:44
Ответы с готовыми решениями:

Использование z-index для позиционирования блоков
Здравствуйте! Помогаю знакомым делать лабораторную по HTML. В ней есть задание: нарисовать большой...

Определение рабочей области сотовых систем позиционирования
1. Определение рабочей области сотовых систем позиционирования. 2. Проведение расчета рабочей...

Использование всей консоли для вывода
Почему когда печатается последний символ в консоли то курсор переходит на новую строку? ...

Выбор всей строки в Grid-е
Добрый день! суть в следующем! что то не много не до получиться! делаю в инит грида вот такой...

Отступы для всей таблицы
Есть вот такая ситуация: Нужно на определенном фоне сделать таблицу меньшего размера. В таблице...

0
05.04.2023, 20:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2023, 20:44
Помогаю со студенческими работами здесь

Позиционирования окна приложения Delphi в определенном месте
Здравствуйте. Скажите пожалуйста как можно позиционировать форму Delphi в определенном месте. Может...

Динамический Grid с распределением по всей ширине
С добрым днём наивысшей категории и с днём трезвенника! ) Никак не получается, чтобы динамический...

Wxpython. wx.grid.Grid. фон таблицы
Можно как-то сделать, чтобы фон таблицы не вылезал за границы таблицы (см рис)? либо как-то сделать...

Разложение таблицы покрытия по столбцу
Здравствуйте. Нужен алгоритм разложение таблицы покрытия по столбцу... Хоть что то на эту тему,...

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

Как создать список с данными из 2-го столбца таблицы для вставки всей строки в другую таблицу
на одной странице есть таблица с несколькими колонками, необходимо создать раскрывающийся список с...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru