更改Tkinter Frame标题

20

我正在尝试弄清楚如何更改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()

使用这个示例代码,框架的标题将显示标准的 "tk" ,但我想将其更改为类似于 "我的数据库" 的东西。我已尝试了我能想到的一切,但没有成功。任何帮助将不胜感激。


init() 中添加 self.master.title('My Title')。 - Prabhakar
3个回答

44

试试这个:

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

最后,为了让你的代码更易读,我建议给你的类名首字母大写,以与几乎所有 Python 程序员保持一致:
class StartWindow(...):

通过使用与其他人相同的约定,可以更轻松地理解您的代码。

有关tkinter社区使用的命名约定的更多信息,请参见PEP8


你好,非常感谢您的回复。不幸的是,这对我没有起作用。在进行建议的修改后,我最终得到了两个小部件窗口,一个看起来像我的原始小部件,另一个是空白的,但具有所需的标题。然而,下一个答案确实解决了我的问题。谢谢,我真的很感激您的帮助。 - user3798654
如果在调用 tk.Tk() 之前创建了一些小部件,那么您最终将得到两个窗口。您应该在创建任何其他小部件之前明确创建根窗口。 - Bryan Oakley

2

我通常使用以下代码开始我的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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接