ScrolledText不会出现在tkinter网格布局中

时间:2016-03-15 21:24:24

标签: python tkinter

.pack()与我的ScrolledText小部件一起用于tkinter时,会出现一个带有滚动条的文本框的正确框。但是,当我将其切换为使用.grid()时,它不再出现在窗口中。刚走了。

以下是我的代码的适用部分:

import tkinter as tk
import tkinter.scrolledtext as tkst
import tkinter.font as tkFont
import tkinter.ttk as ttk
class Application(tk.Frame):

def __init__(self, master=None):
    tk.Frame.__init__(self, master)
    # self.grid()
    self.createWidgets()

def createWidgets(self):
    self.logArea = tkst.ScrolledText(self,
                wrap   = tk.WORD,
                width  = 20,
                height = 8,
                state="disabled",
                name="logArea"
            )
            self.logArea.grid(padx=10, pady=10,row=1, sticky=tk.W)

root = tk.Tk()
app = Application(master=root)
app.mainloop()

我在第1行有一个Treeview小部件显示正常,只是由于某种原因,这个ScrolledText小部件根本没有显示,但在我之前只使用pack()时工作正常。

知道出了什么问题吗?

修改:我在 init 中添加了self.master = master,然后在我的ScrolledText初始化中使用self.master而不是self。我不确定为什么这解决了这个问题,很高兴知道为什么要修复它。

1 个答案:

答案 0 :(得分:1)

这个修订版,添加了类语句,网格化到根窗口的应用程序框架,以及未禁用的文本框,可以正常工作。

import tkinter as tk
import tkinter.scrolledtext as tkst
import tkinter.font as tkFont
import tkinter.ttk as ttk

class Application(tk.Frame):
    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        self.grid()
        self.createWidgets()
    def createWidgets(self):
        self.logArea = tkst.ScrolledText(self,
                    wrap   = tk.WORD,
                    width  = 20,
                    height = 8,
                    #state="disabled",
                    name="logArea"
                )
        self.logArea.grid(padx=10, pady=10,row=1, sticky=tk.W)
        self.logArea.insert('1.0', 'test insertion')

root = tk.Tk()
app = Application(root)
app.mainloop()