@Re7r0

Почему в Tkinter не появляется изображение на кнопке?

Код:
from tkinter import*
from tkinter import ttk
from tkinter.ttk import Combobox
import os
from PIL import Image, ImageTk

root=Tk()
root.attributes("-topmost",True)
root.geometry("400x600")

tab_control = ttk.Notebook(root)
tab_control.pack(expand=1, fill="both")
heroes = []

tab1 = ttk.Frame(tab_control)
tab2 = ttk.Frame(tab_control)
tab3 = ttk.Frame(tab_control)
tab4 = ttk.Frame(tab_control)
tab5 = ttk.Frame(tab_control)

tab_control.add(tab1, text="ПБГ")
tab_control.add(tab2, text="ГВГ")
tab_control.add(tab3, text="Соседи")
tab_control.add(tab4, text="Круговые")
tab_control.add(tab5, text="Таверна")



combo = Combobox(tab1)  
combo['values'] = ("Ранне средневековье", "Нет эпохи", "Эра Юпитера", "Арктическое будущее", "Колониальный период", "Эра прогрессивизма", "Эра Будущего", "Эпоха Постмодерна", "Эпоха Модерна", "Пояс астероидов из космической эры", "Океаническое будущее", "Новейшее время", "Космическая эра Марса", "Космическая эра Венеры", "Индустриальная эпоха", "Завтрашняя эпоха", "Железный век", "Высокое Средневековье", "Виртуальное будущее", "Бронзовый Век")  
combo.current(1) 
combo.grid(column=0, row=0)

def set_epoch():
    global heroes
    print(heroes)
    for i in range(1, len(heroes), 2):
        heroes[i].destroy()
    heroes = []
    
    pos = 1
    pp = 1
    print(combo.get())
    directs = os.listdir("units/"+combo.get())
    for i in directs:
        hh = os.listdir("units/"+combo.get()+"/"+i)
        for t in hh:
            image = ImageTk.PhotoImage(file=("units/"+combo.get()+"/"+i+"/"+t))
            heroes.append(i)
            heroes.append(Button(tab1, image=image))
            print("ok")

            heroes[len(heroes)-1].pack()
            

            pos += 1
            if pos == 5:
                pos = 1
                pp = 2
           

btn = Button(tab1, text="OK", command=set_epoch)
btn.grid(column=1, row=0)

root.mainloop()


появляется ошибка: _tkinter.TclError: cannot use geometry manager pack inside .!notebook.!frame which already has slaves managed by grid

если "heroes[len(heroes)-1].pack()" поменяю на "heroes[len(heroes)-1].grid(column=pos, row=pp)" то изображений на кнопке вообще нет
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы