我第一次搞乱了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()
答案 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)
它会起作用。