I can not set title of top level

≡放荡痞女 提交于 2019-12-02 15:54:50

问题


I want to set title for TopLevel, but TopLevel shows title of Root. I think that my next script corresponds with examples from TkInter documentation, but gives me bad result. Cann You explain me, why my setting master.title = 'Top' in class AppTop does not set new title for TopLevel?

import tkinter as tk

class AppTop(tk.Frame):

    def __init__(self, master):
        mon_h = 900
        mon_w = 1250

        master.title = 'Top'

        tk.Frame.__init__(self, master)
        master.minsize(height = 900, width = 600)

        fr_button = tk.Frame(master)
        fr_button.place(relx=0.01, rely=0.06)

        butArrowPlus = tk.Button(fr_button, text=">", height = 1, width = 20, command=self.Cmd)
        butArrowPlus.grid(column= 1, row= 1)
        return

    def Cmd(self):
        return

class Application(tk.Frame):
    def __init__(self, master):
        tk.Frame.__init__(self, master)

        frRoot = tk.Frame(master, width=700, height=400, bd=2)
        frRoot.place(relx=0.1, rely=0.1, anchor="nw")

        butIllumBall = tk.Button(frRoot, text= 'Light Ball', height = 1, width = 20, command=self.cmd_illuminated_ball)
        butIllumBall.grid(column= 0, row= 0, pady=10)

        master.minsize(height = 250, width = 300)
        master.title('Root')

    def cmd_illuminated_ball(self):

        top = tk.Toplevel()
        top.transient(self.master)        
        top.grab_set()                   
        app = AppTop(master = top)
        app.mainloop()
        return

wndRoot = tk.Tk()
appapp = Application(master=wndRoot)
appapp.mainloop()

回答1:


You try to set Toplevel title with:

master.title = 'Top'

but the correct syntax is:

master.title('Top')

There are a couple of additional things: You do not need an additional mainloop for the Toplevel window. From the code it looks like you think that the Toplevel is a new application, instantiating it with app = AppTop(master = top). But it's just a new window which runs under the appapp.mainloop().

AppTop() inherits from tk.Frame() but you never use it. Instead you put all the widgets directly in the Toplevel (master) window. Same goes for Application() as well.



来源:https://stackoverflow.com/questions/55620787/i-can-not-set-title-of-top-level

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!