繁体   English   中英

Tkinter:如何将文本插入作为框架一部分的文本小部件?

[英]Tkinter: How to insert text into text widget that's part of a Frame?

我需要帮助在作为Frame一部分的Text小部件中插入文本。

class Test_frame(Frame):
    def __init__(self):
        Frame.__init__(self)
        self.config(width = 700, height = 450)
        self.logs_frame = LabelFrame(self, height = 402, width = 348, text = 'Logs')
        self.logs_frame.grid(column = 1, row = 0, pady=10, sticky = N)
        self.logs_frame.grid_propagate(0)

        self.text_box = Text(self.logs_frame, width=40, pady=10, height=22)
        self.text_box.pack(side="left")

        self.scroll_y = Scrollbar(self.logs_frame, orient="vertical", command=self.text_box.yview)
        self.scroll_y.pack(side="left", expand=True, fill="y")
        self.text_box.configure(yscrollcommand=self.scroll_y.set)

        self.text_box.insert (?????.END, "Sample Text")

我现在不知道如何访问该Text小部件。

Test_frameNotebook一部分:

class App(Tk):
    def __init__(self):
        Tk.__init__(self)
        self.my_notebook = ttk.Notebook(self)
        self.my_notebook.pack(pady = 5)
        self.frames = {}
        for F in (Test_frame, Final_flash_frame):
            frame = F()
            self.frames[F] = frame
            frame.pack(fill = 'both', expand = 1)
        self.my_notebook.add(self.frames[Test_frame], text = "Testing")

我创建了一个最小的源,但我想你解决了你的问题。

我添加了一个小按钮来添加文本,并从课外添加了一些文本。

无论如何,它是这样的:

import tkinter as Tk
import tkinter.ttk as ttk
from tkinter import *

def BumpText(textbox):
    textbox.insert(END,", MORE TEXT")


class Test_frame(Frame):
    def __init__(self):
        Frame.__init__(self)
        self.config(width = 700, height = 450)
        self.logs_frame = LabelFrame(self, height = 402, width = 348, text = 'Logs')
        self.logs_frame.grid(column = 1, row = 0, pady=10, sticky = N)
        self.logs_frame.grid_propagate(0)

        self.text_box = Text(self.logs_frame, width=40, pady=10, height=22)
        self.text_box.pack(side="left")

        self.scroll_y = Scrollbar(self.logs_frame, orient="vertical", command=self.text_box.yview)
        self.scroll_y.pack(side="left", expand=True, fill="y")
        self.text_box.configure(yscrollcommand=self.scroll_y.set)

        self.text_box.insert(END, "Sample Text")

        self.button = Button(self.logs_frame, text="Add\nText", command=lambda:self.text_box.insert(END, ", More Text"))
        self.button.pack(side="bottom")

class App(Tk):
    def __init__(self):
        Tk.__init__(self)
        self.my_notebook = ttk.Notebook(self)
        self.my_notebook.pack(pady = 5)
        self.frames = {}
        for F in (Test_frame,):  # , Final_flash_frame):
            frame = F()
            self.frames[F] = frame
            frame.pack(fill = 'both', expand = 1)
        self.my_notebook.add(self.frames[Test_frame], text = "Testing")

        for F,f in self.frames.items():
            try:
                f.text_box.insert(END," (Added by App)")
            except Exception as e:
                pass  # ignore frames without text_box 


if __name__ == "__main__":
    App().mainloop()

好的,显然只是使用:

self.text_box.insert (END, "Sample Text")

作品

干杯,A

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM