self.myfrm=Frame(nb, name=self.wzsgclass)
self.myfrm.pack()
self.sbtn = Button(self.myfrm, text='Update', underline=0,
command=self.update)
self.sbtn.pack(anchor=NW, padx=7, pady=5)
#self.txtarea=Label(self.myfrm, justify=LEFT, ancticky=W, pady=or=N, text=self.rslt)
self.txtarea=Text(self.myfrm, width=800, height=600)
self.txtarea.pack()
self.txtarea.insert('3.0',self.rslt)
self.txtarea.bind("<Key>", lambda e: "break")
self.vscroll = Scrollbar(self.myfrm, orient=VERTICAL, command=self.txtarea.yview)
self.txtarea['yscroll'] = self.vscroll.set
self.vscroll.pack(side='right', fill='y')
我可以看到按钮和文本区域,但没有滚动条。 提前感谢您的帮助。
答案 0 :(得分:0)
pack
的工作原理是将对象放在可用的剩余空间中。当您在没有参数的情况下执行self.txtarea.pack()
时,它与self.txtarea.pack(side="top")
相同。您打包的任何其他小部件都将在下面此小部件。
因为您先打包文本小部件,所以它会耗尽所有剩余空间。如果剩余可见空间,则它将位于文本小部件下方。如果您的窗口具有固定大小,则在打包文本小部件后可能没有任何空闲可见空间。如果窗口足够大,您会看到文本小部件下方的滚动条。
您pack
窗口小部件的顺序很重要,因为打包的每个窗口小部件都会删除一些空间,而后续调用只会影响剩余空间。如果您尝试打包对于空间来说太大的小部件(例如:如果您有一个固定的窗口大小),pack
将开始将窗口缩小到最小尺寸,然后再完全剪切小部件。它以与窗口小部件打包相反的顺序执行此操作。由于滚动条最后被打包,如果没有空间,它是第一个被删除的。
有关打包程序算法的明确说明,请参阅http://tcl.tk/man/tcl8.5/TkCmd/pack.htm#M26