Хорошо, здесь есть несколько проблем.Во-первых, у вашего ярлыка нет строки или изображения, связанных с ним.Поэтому его ширина и высота будут очень маленькими.Поскольку вы используете пакет, содержащийся виджет (корневое окно) будет «сжиматься, чтобы поместиться» вокруг этого виджета и любых других виджетов, которые вы упаковываете в корневом окне.
Во-вторых, вы используете место для кнопки, что означаетРазмер не повлияет на размер родителя.Не только это, но вы помещаете кнопку внутри очень крошечной метки.Таким образом, единственное, что контролирует размер родительского элемента, - это метка, поэтому главное окно оказывается очень маленьким.
У вас есть еще одна проблема - вы показываете диалоговое окно перед входом в цикл обработки событий.Я немного удивлен, что это даже работает, но Tkinter иногда делает необычные вещи под одеялом.Вы должны войти в цикл обработки событий перед вызовом диалогового окна.
Попробуйте этот вариант вашего кода в качестве отправной точки:
from Tkinter import *
import tkMessageBox
def showInfo():
tkMessageBox.showinfo("Test","Info")
root = Tk()
p1 = Label(root, bg='blue', text="hello")
p1.pack()
b1 = Button(root, text="Test Button", command=showInfo)
b1.pack()
root.mainloop()