Ich versuche herauszufinden, wie man den Titel eines Tkinter-Frames ändert. Nachfolgend finden Sie vereinfachten Code, der den Teil meines Programms nachahmt, in dem ich versuche, den Titel zu ändern:
from Tkinter import *
class start_window(Frame):
def __init__(self, parent=None):
Frame.__init__(self, parent)
Frame.pack(self)
Label(self, text = 'Test', width=30).pack()
if __== '__main__':
start_window().mainloop()
Mit diesem Beispielcode hat der Frame den Standardtitel "tk", aber ich möchte ihn in etwas wie "Meine Datenbank" ändern. Ich habe alles versucht, woran ich denken kann, ohne Erfolg. Jede Hilfe wäre dankbar.
Versuche dies:
if __== '__main__':
root = Tk()
root.title("My Database")
root.geometry("500x400")
app = start_window(root)
root.mainloop()
Zunächst sollten Sie das Hauptfenster explizit erstellen, indem Sie eine Instanz von Tk
erstellen. Wenn Sie dies tun, können Sie den Verweis auf dieses Fenster verwenden, um den Titel zu ändern.
Ich empfehle auch not mit einem globalen Import. Importieren Sie stattdessen tkinter nach Namen, und stellen Sie den tkinter-Befehlen den Modulnamen voran. Ich verwende den Namen tk
, um die Eingabe zu reduzieren:
import Tkinter as tk
class start_window(tk.Frame):
def __init__(self, parent=None):
tk.Frame.__init__(self, parent)
tk.Frame.pack(self)
tk.Label(self, text = 'Test', width=30).pack()
if __== '__main__':
root = tk.Tk()
root.wm_title("This is my title")
start_window(root)
root.mainloop()
Um Ihren Code lesbarer zu machen, schlage ich vor, Ihrem Klassennamen einen Großbuchstaben zu geben, damit er mit fast allen Python-Programmierern überall gleich ist:
class StartWindow(...):
Durch die Verwendung der gleichen Konventionen wie bei allen anderen wird es uns leichter, Ihren Code zu verstehen.
Weitere Informationen zu Namenskonventionen der tkinter-Community finden Sie unter PEP8
Ich starte meine Tkinter Apps generell mit
#!/usr/local/bin/python3
import Tkinter as tk
root = Tk()
root.title('The name of my app')
root.minsize(300,300)
root.geometry("800x800")
root.mainloop()