Существует три менеджера геометрии: pack , grid и place . Использование одного из них известно как mapping
виджет.
Pack и grid не могут быть смешаны. Это одно или другое. Место можно смешивать с pack или grid , но это действительно (на мой взгляд) последний выбор, потому что placed
виджеты не обнаруживаются внешним кадром когда он автоматически масштабируется. Итак, благодаря вышесказанному вы смогли смешать pack с place и не получить ошибку.
Как только вы map
что-то с менеджером геометрии, Вы можете unmap
и remap
это. Итак, ваш первый вызов d.place()
places
виджета d . Но затем ваш второй вызов d.pack()
переопределяет place()
, а затем packs
виджет.
Поскольку для pack()
по умолчанию установлено значение side = 'top', вы увидите, что ваши четыре виджета сложены с a сверху вниз до d снизу.
Кроме того, ваше приложение работает неправильно, потому что вы создаете функцию hub()
, но ты никогда не называешь это Добавьте:
if __name__ == '__main__':
hub()
в конец вашей программы.
Итак, хотя ваш опубликованный код неполон, попробуйте что-то вроде этого:
import tkinter
def hub():
newbw=tkinter.Tk()
newbw.attributes('-fullscreen', True)
a=tkinter.Button(newbw, text="demonfight", command=dfpre)
b=tkinter.Button(newbw, text="shop", command=shop)
c=tkinter.Button(newbw, text="train", command=trainhub)
d=tkinter.Button(newbw, text="quit", command=end)
# d.place(x=20, y=20)
a.pack()
b.pack()
c.pack()
d.pack()
if __name__ == '__main__':
hub()