Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проблема с gui в tkinter

слава чернов Ученик (127), на голосовании 1 месяц назад
я создаю проект библиотеки беспилотников в tkinter, но при запуске программы на кнопках появляются белые полоски помогитею
 import tkinter as tk 

def listpage(): #сюда переключение страниц
pass

root = tk.Tk()
root.title("BPLA progect")
root.geometry("228x407")
root.resizable(height=False, width=False)

drons = [
"пионер",
"орион",
"луч",
"гриф-к"
]

for i in range(3):
for j in range(2):
btn1 = tk.Button(
root,
text=f"{drons[i * 2 + j]}"
)
btn1.grid(row=i, column=j, padx=0, pady=0)

label = tk.Label(btn1)
label.pack(padx=50, pady=50)
lbl1 = tk.Label(root, text="страница")
lbl1.grid()

root.mainloop()
Голосование за лучший ответ
AlexKurov Мыслитель (9165) 2 месяца назад
Проблема в вашем коде заключается в том, что вы добавляете tk.Label на кнопку (btn1), что не является корректной практикой в tkinter. Кнопка не предназначена для размещения виджетов внутри нее, поэтому это приводит к отображению артефактов, таких как белые полосы.

Чтобы исправить проблему, удалите часть кода, где вы пытаетесь добавлять Label внутри кнопки. Ниже приведен исправленный код:
 import tkinter as tk  

def listpage(): # сюда переключение страниц
pass

root = tk.Tk()
root.title("BPLA project")
root.geometry("228x407")
root.resizable(height=False, width=False)

drons = [
"пионер",
"орион",
"луч",
"гриф-к"
]

for i in range(2): # Изменено на 2 строки, так как всего 4 кнопки
for j in range(2):
btn1 = tk.Button(
root,
text=f"{drons[i * 2 + j]}"
)
btn1.grid(row=i, column=j, padx=0, pady=0)

lbl1 = tk.Label(root, text="страница")
lbl1.grid(row=2, column=0, columnspan=2) # Отображение под кнопками

root.mainloop()
Из изменений:
Удален код, добавляющий Label внутри кнопок:
 label = tk.Label(btn1)  
label.pack(padx=50, pady=50)
Исправлен расчет количества строк в цикле (range(2)), так как у вас 4 дрона (по 2 в строке).
Отрегулировано размещение текста "страница" (row=2 и columnspan=2) под кнопками.
Теперь ваша программа будет работать корректно без белых полосок.
слава черновУченик (127) 2 месяца назад
label внутри кнопок ограничивает их размер без него никак
AlexKurov Мыслитель (9165) слава чернов, не добавляй Label внутрь кнопки, а вместо этого задай фиксированный размер для самих кнопок через параметры width и height.
Похожие вопросы