Я не могу установить заголовок верхнего уровня - PullRequest
0 голосов
/ 10 апреля 2019

Я хочу установить заголовок для TopLevel, но TopLevel показывает заголовок Root.Я думаю, что мой следующий скрипт соответствует примерам из документации TkInter, но дает мне плохой результат.Cann Вы объясните мне, почему мой параметр master.title = 'Top' в классе AppTop не устанавливает новый заголовок для 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 Ответ

0 голосов
/ 11 апреля 2019

Вы пытаетесь установить заголовок Toplevel с помощью:

master.title = 'Top'

но правильный синтаксис:

master.title('Top')

Есть несколько дополнительных вещей: вам не нужна дополнительная mainloop для окна Toplevel. Из кода выглядит так, как будто вы думаете, что Toplevel - это новое приложение, создающее его с помощью app = AppTop(master = top). Но это просто новое окно, которое работает под appapp.mainloop().

AppTop() наследуется от tk.Frame (), но вы никогда не используете его. Вместо этого вы помещаете все виджеты прямо в окно Toplevel (master). То же самое относится и к Application().

...