tkinter帧无法正常工作

时间:2015-05-14 17:49:37

标签: python-3.x tkinter

我第一次搞乱了tkinter模块而不太确定为什么我的小部件没有显示在正确的框架中?

“text”和“entry”小部件应显示在窗口上半部分的顶部,“button”和“output”小部件应显示在窗口下半部分的顶部?

由于

from tkinter import *

main_window = Tk()
main_window.title("X SQUARED CALCULATOR")
main_window.geometry("300x300")
mw_frame1 = Frame(main_window).pack()
mw_frame2 = Frame(main_window).pack()

text_widget1 = Label(mw_frame1, text="Please enter a value:").pack(side=TOP)
entry_widget1 = Entry(mw_frame1, text="Please enter a value.").pack(side=TOP)
button_widget1 = Button(mw_frame2, text='Press to calculate!').pack(side=TOP)
output_widget1 = Label(mw_frame2, text="THIS IS WHERE THE NUMBER WILL APPEAR").pack(side=TOP)

main_window.mainloop()

2 个答案:

答案 0 :(得分:3)

问题在于:

mw_frame1 = Frame(main_window).pack()

这会将mw_frame1设置为None,因为pack()会返回None。因此,当您尝试将此窗口小部件的其他窗口小部件设为子窗口时,它们实际上将成为根窗口的子窗口。因为他们是根窗口的孩子,所以他们被包装在你不期望的地方。

将您的呼叫转移到pack()以分隔语句:

mw_frame1 = Frame(...)
mw_frame2 = Frame(...)
...
mw_frame1.pack(...)
mw_frame2.pack(...)

答案 1 :(得分:0)

text_widget1 = Label(mw_frame1, text="Please enter a value:").pack(side=TOP)

而是像这样分开写包:

text_widget1 = Label(mw_frame1, text="Please enter a value:")
text_widget1.pack(side=TOP)

它会起作用。