簡體   English   中英

Tkinter框架不顯示

[英]Tkinter frame not displaying

我正在使用TKinter在python上開發此Tennis GUI程序。 我在下面的代碼中遇到的當前錯誤是'self.title_frame'甚至沒有出現在GUI的row0處。 它完全消失了。 是什么導致此問題?

此外,沒有實際的錯誤信息。 僅僅是頂部框架(self.title_frame)沒有顯示在第0行上的問題。實際上,不僅不顯示它,而且位於第0行的標簽(self.title_label)也會顯示在第0行,而沒有顯示在它下面的框架。

from tkinter import *


    #*||Variables||*

#Stylistic Variables:

active_BG = 'DarkGreen' #active background color
active_FG = 'white' #active foreground color
main_font = 'SimSun 30 bold' #main font, size and style
sub_font = 'SimSun 20 bold' #sub font, size and style
sub_font2 = 'SimSun 11 bold' #sub font 2, size and style
sub_font3 = 'SimSun 10'

bg_1 = 'MediumSeaGreen' #background color 1
bg_2 = 'palegreen' #background color 2
bg_3 = 'SeaGreen' #background color 3
fg_1 = 'DarkGreen' #foreground color 1
fg_2 = 'LightCyan' #foreground color 2
hand_cursor = 'hand2' #button hover cursor
raised_relief = 'raised' #relief style 1 (raised)
groove_relief = 'groove' #relief style 2 (groove)

#Game Variables

#STUFF...

    #*||Functions||*

class tenalyzer_V1:

    def __init__(self, root):
        self.root = root

        self.title_frame = Frame(self.root)
        self.title_frame.grid(row=0)
        self.title_frame.config(bg=bg_1, width=520, height=100)

        self.title_label = Label(self.title_frame)
        self.title_label.grid(row=0)
        self.title_label.config(text='Tenalyzer v1.0', bg=bg_1, fg=fg_2, font=main_font, width='17', bd=10, relief=groove_relief)

        self.start_frame = Frame(self.root, bg=bg_3, width=520, height=100).grid(row=1)
        self.start_label = Button(self.start_frame)
        self.start_label.grid(row=1)
        self.start_label.config(text='START', bg=bg_2, activebackground=active_BG , fg=fg_1, activeforeground=active_FG, font=sub_font, width=14, bd=5, relief=raised_relief, cursor=hand_cursor, command=self.start_page)

        self.instructions_frame = Frame(self.root, bg=bg_1, width=520, height=100).grid(row=2)
        self.instructions_btn = Button(self.instructions_frame)
        self.instructions_btn.grid(row=2)
        self.instructions_btn.config(text='INSTRUCTIONS', bg=bg_2, activebackground=active_BG , fg=fg_1, activeforeground=active_FG, font=sub_font, width=14, bd=5, relief=raised_relief, cursor=hand_cursor, command=self.instructions_page)

        self.credit_frame = Frame(self.root, bg=bg_3, width=520, height=100).grid(row=3)
        self.credit_btn = Button(self.credit_frame)
        self.credit_btn.grid(row=3)
        self.credit_btn.config(text='CREDITS', bg=bg_2, activebackground=active_BG , fg=fg_1, activeforeground=active_FG, font=sub_font, width=14, bd=5, relief=raised_relief, cursor=hand_cursor, command=self.credits_page)

        self.return_frame = Frame(self.root, bg=bg_1, width=520, height=40).grid(row=4)
        self.return_btn = Button(self.return_frame)
        self.return_btn.grid(row=4)
        self.return_btn.config(text='Exit', bg=bg_2, activebackground=active_BG , fg=fg_1, activeforeground=active_FG, font=sub_font2, width=16, bd=5, relief=raised_relief, cursor=hand_cursor, command=self.exit_command)

    def exit_command(self):
        root.destroy()

    def title_page(self):
        self.title_label.grid(row=0)
        self.start_label.grid(row=1)
        self.instructions_btn.grid(row=2)
        self.credit_btn.grid(row=3)

        self.title_label.config(text='Tenalyzer v1.0')
        self.return_btn.config(text='Exit', command=self.exit_command)

    def start_page(self):
        print('started')

    def instructions_page(self):
        print('instructions page')

    def credits_page(self):
        print('credits page')
        self.title_label.config(text='Credits:')
        self.return_btn.config(text='Go Back', command=self.title_page)

    #*||Main Program||*

root = Tk()
root.title('Tenalyzer v1.0')
root.resizable(width=FALSE, height=FALSE)
root.geometry('{}x{}'.format(520, 440))
keyword = tenalyzer_V1(root)
root.mainloop()

框架正在顯示,因為標簽在框架內,因此,如果您看到了,則表明框架已包裝好。 我認為您遇到的問題是框架不符合您為其指定的寬度和高度。 要解決此問題,請關閉網格傳播。 即。

self.root.grid_propagate(False)

這意味着將小部件添加到框架時,框架不會調整大小以匹配小部件。

有關更多信息,請參見Bryan Oakley的答案: 如何設置框架的最小和最大高度或寬度?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM