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

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

слава чернов Ученик (131), открыт 11 часов назад
я создаю проект библиотеки беспилотников в 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()
1 ответ
Беспрекословный Эксперт Мыслитель (6941) 11 часов назад
Проблема в вашем коде заключается в том, что вы добавляете 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) под кнопками.
Теперь ваша программа будет работать корректно без белых полосок.
слава черновУченик (131) 11 часов назад
label внутри кнопок ограничивает их размер без него никак
Беспрекословный Эксперт Мыслитель (6941) слава чернов, не добавляй Label внутрь кнопки, а вместо этого задай фиксированный размер для самих кнопок через параметры width и height.
Похожие вопросы