我正在尝试填充滚动条以与文本框匹配,我知道如果使用fill属性,则可以使用pack()进行操作,如何使用grid()做到这一点?如果有的话,我试图找到一个等效于fill的属性。
def bannergrabber():
top = Toplevel()
top.resizable(0, 0)
top.title("Website Banner Grabber")
top.configure(background="black")
labelframe = LabelFrame(top)
labelframe.config(bg="black")
labelframe.grid(row=1, column=0, padx=10)
labelframe2 = LabelFrame(top)
labelframe2.config(bg="black")
labelframe2.grid(row=0, column=0, pady=5, padx=10)
text = Text(labelframe2)
text1 = Text(top)
label2 = Label(labelframe2, text="Website:")
label2.config(bg="black")
label2.grid(row=0, pady=5, sticky=W)
text.config(width=25, height=1, bg="black")
text.grid(row=0, column=1)
def bannergrabbercode():
try:
sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sck.connect((text.get("1.0", 'end-1c'), 80))
sck.send(b"HEAD / HTTP/1.0\r\n\r\n")
data = sck.recv(1024)
sck.close()
text1.insert(END, data)
except socket.error:
text1.insert(END, "host is not reachable")
def clear():
text.delete("1.0", END)
b = Button(labelframe, text="Enter", bg="black", command=bannergrabbercode)
b.grid(row=1, column=0, sticky=W)
c = Button(labelframe, text="Clear", bg="black", command=clear)
c.grid(row=1, column=1, pady=5, padx=10, stick=W)
scrollbar = Scrollbar(top)
scrollbar.grid(row=2, column=1, sticky=W)
text1.config(width=40, height=10, bg="black")
text1.grid(row=2, pady=10, sticky=W)
scrollbar.config(bg="black", command=text1.yview)
text1.config(yscrollcommand=scrollbar.set)
top.mainloop()
我花了一些时间来构建这种布局,grid()有时会令人困惑,但由于受限于此,我不想回到使用pack()上。
答案 0 :(得分:2)
tkinter中grid()是否具有像pack()这样的填充属性?
是的,它是sticky
属性,它告诉窗口小部件“粘”在分配给它的空间的一侧或多侧。
对于pack
的{{1}},等效的fill="x"
选项为grid
(东西向)。对于sticky="ew"
,当量值为fill="y"
(南北)。对于sticky="ns"
,它是fill="both"
。 sticky="nsew"
比pack灵活一点,因为您可以将一个小部件固定在一侧。
由于范围有限,我不想再使用pack()。
grid
不受限制,只是有所不同。在某些方面,它比pack
更好,而在其他方面则更糟。他们俩都有自己的位置。就个人而言,我几乎从未创建过不同时使用两者的GUI。