2017-12-07 3 views
0

Also ich möchte nur dieses Fenster ein Text-Widget, das immer oben ist. Im Versuch, dieses Widget hinzufügen, aber es hält ein weiteres Fenster ... undTkinter Texteditor das ist immer oben

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

Er erstellt ein weiteres Fenster, weil ... ein neues Fenster erstellt wird. Was denkst du 'tk.Topelevel (selbst)'? –

Antwort

0

Wenn Sie Ihren Text-Widget aktiv sein soll Sie diese stattdessen aufrufen müssen:

self.tb.focus_set() 

Was Sie tun stattdessen erstellen Toplevel-Widget, das ein Fenster ist die oberste bleibt, wie in oben alle Fenster in Desktop, sollten Sie entfernen:

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

Wenn auch Sie möchten, dass Ihre gesamte Fenster, das Sie das für Ihre root stattdessen in Ihrem 'main' tun können, nach this answer:

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

Schließlich zu haben:

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

Wenn Sie auch andere Widgets unfokussierbar machen wollen:

widget.config(takefocus=False)