2015-11-10 1 views
10

Я пытаюсь понять, как изменить заголовок 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() 

С помощью этого образца коды Рамы имеет стандартное «ки» название, но я хотел бы изменить его на что-то вроде «Моя база данных». Я пробовал все, что мог, без успеха. Любая помощь будет оценена по достоинству.

ответ

18

Попробуйте это:

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

Привет, Большое спасибо. Это сработало отлично. Я действительно ценю твою помощь. – user3798654

1

Во-первых, вы должны быть явно создать главное окно путем создания экземпляра 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

+0

Привет, Большое спасибо за ваш ответ. К сожалению, это не сработало для меня. После внесения предлагаемых изменений я заканчиваю двумя окнами виджетов, которые выглядят как мой оригинальный виджет, а второй - пустой, но имеет нужный заголовок. Однако следующий ответ действительно разрешил мою проблему. Спасибо, я действительно ценю вашу помощь. – user3798654

+0

В итоге вы создадите два окна, если вы создадите некоторые виджеты, прежде чем вы вызовете 'tk.Tk()'. Вы должны явно создать корневое окно перед созданием любых других виджетов. –

0

Я обычно начинают свои 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()