Tkinter文本编辑器,总是在最上面

2024-09-30 05:17:29 发布

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

所以我只想让这个窗口成为一个始终在顶部的文本小部件。我试图添加这个小工具,但它一直在创建另一个窗口。。。在

import tkinter as tk
from tkinter import ttk

class App(tk.Frame):

    def __init__(self, master, *args, **kwargs):
        tk.Frame.__init__(self, master, *args, **kwargs)

        self.pack()

        hello="hello"

        self.tb = tk.Text(self)
        self.tb.pack(expand=1, fill = tk.BOTH)
        self.tb.insert(tk.END, hello)

        topLevelWindow = tk.Toplevel(self)
        # Make topLevelWindow remain on top until destroyed, or attribute changes.
        topLevelWindow.attributes('-topmost', 'true')

if __name__ == "__main__":
    root = tk.Tk()
    main = App(root)
    root.mainloop()

Tags: importselfmasterapphelloinittkinterargs
1条回答
网友
1楼 · 发布于 2024-09-30 05:17:29

如果您希望您的文本小部件处于活动状态,则需要调用此控件:

self.tb.focus_set()

您要做的是创建一个Toplevel小部件,它是一个位于顶部的窗口,就像桌面上的所有窗口一样,您应该删除:

^{pr2}$

如果您还希望您的整个窗口,您可以为您的root执行此操作,而不是根据this answer在“main”中执行:

root.call('wm', 'attributes', '.', '-topmost', '1')

最终拥有:

import tkinter as tk
from tkinter import ttk

class App(tk.Frame):

    def __init__(self, master, *args, **kwargs):
        tk.Frame.__init__(self, master, *args, **kwargs)

        self.pack()

        hello="hello"

        self.tb = tk.Text(self)
        self.tb.pack(expand=1, fill = tk.BOTH)
        self.tb.insert(tk.END, hello)

        self.tb.focus_set()

if __name__ == "__main__":
    root = tk.Tk()
    root.call('wm', 'attributes', '.', '-topmost', '1')
    main = App(root)
    root.mainloop()

另外,如果要使其他小部件不可聚焦:

widget.config(takefocus=False)

相关问题 更多 >

    热门问题