Изменить заголовок Tkinter Frame

Я пытаюсь понять, как изменить заголовок Tkinter Frame. Ниже приведен упрощенный код, который имитирует часть моей программы, где я пытаюсь изменить заголовок:

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 __name__ == '__main__':
    start_window().mainloop()

В этом примере кода Frame имеет стандартное название "tk", но я хотел бы изменить его на нечто вроде "Моя база данных". Я пробовал все, что мог, без успеха. Любая помощь будет оценена по достоинству.

Ответ 1

Попробуйте следующее:

if __name__ == '__main__':
    root = Tk()
    root.title("My Database")
    root.geometry("500x400")
    app = start_window(root)
    root.mainloop()

Ответ 2

Сначала вы должны явно создать главное окно, создав экземпляр Tk. Когда вы это сделаете, вы можете использовать ссылку на это окно, чтобы изменить заголовок.

Я также рекомендую не использовать глобальный импорт. Вместо этого импортируйте tkinter по имени и префиксные команды tkinter с именем модуля. Я использую имя Tk для сокращения ввода:

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 __name__ == '__main__':
    root = tk.Tk()
    root.wm_title("This is my title")
    start_window(root)
    root.mainloop()

Наконец, чтобы сделать ваш код более удобным для чтения, я предлагаю присвоить вашему классу заглавную первую букву, совместимую с почти всеми программистами на питоне:

class StartWindow(...):

Используя те же соглашения, что и все остальные, нам становится легче понять ваш код.

Дополнительные сведения о соглашениях об именах, используемых сообществом tkinter, см. в PEP8

Ответ 3

Обычно я запускаю свои приложения tkinter с помощью

#!/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()