Код:
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)" то изображений на кнопке вообще нет