почему я могу разместить расположение этой кнопки - PullRequest
0 голосов
/ 14 февраля 2020

кнопка не будет go для позиции, которую я установил, когда я ее запускаю, могу ли я получить небольшую помощь, пожалуйста?

import tkinter
newbw=tkinter.Tk()  


def hub():    
    newbw.destroy()
    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()

1 Ответ

1 голос
/ 14 февраля 2020

Существует три менеджера геометрии: 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...