滚动文本不与tkinter grid layou一起出现

2024-05-19 01:41:54 发布

您现在位置:Python中文网/ 问答频道 /正文

当将.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小部件根本不显示,但是在我之前使用just pack()时工作得很好。在

你知道怎么回事吗?在

编辑:我在init中添加了一个self.master = master,然后在ScrolledText的init中使用了self.master,而不仅仅是self。我不知道为什么这个解决了这个问题,如果能知道为什么它能解决它就好了。在


Tags: importselfmasterapplicationinit部件tkinteras
1条回答
网友
1楼 · 发布于 2024-05-19 01:41:54

这个修订版,添加了class语句,应用程序框架网格化到根窗口中,文本框没有被禁用。在

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()

相关问题 更多 >

    热门问题