簡體   English   中英

繼承 LabelFrame 的類的對象不顯示(tkinter)

[英]Object of Class inheriting LabelFrame doesnt show up (tkinter)

基本上我有一個繼承自 LabelFrame 的類,我希望它顯示在窗口本身,但我根本看不到它,無論我做什么它都不會顯示在窗口上

from tkinter import *
root = Tk()
root['bg'] = 'white'
root.state('zoomed')

class CharacterFrame(LabelFrame):
    def __init__(self, master, skin_img, requirement, desc):
        super().__init__(master=master, bg='grey29')
        self.desc = Label(self, text=desc)

default_char_frame = CharacterFrame(master=root, desc='Default Character.', requirement=0, skin_img='')
default_char_frame.grid(row=0, column=0, sticky='nse')

root.mainloop()

好的,所以我沒有實現實際代碼本身是愚蠢的,但現在我不這樣做(這不是實際的源代碼,只是重要的代碼,仍然與實際代碼有相同的錯誤):

from tkinter import *

root = Tk()
root['background'] = 'white'
root.state('zoomed')

class SkinFrame(LabelFrame):
    def __init__(self, master, skin_img, requirement, desc):
        super().__init__(master=master, bg='grey29')
        self.desc = Label(self, text=desc)
        self.desc.pack()

def show_chars():
    button_grid.grid_forget()
    skin_lib.grid(row=1, column=0, sticky='nws')

    button_skin0 = Button(skin_lib, text="Skin1", relief="flat", width=15, fg="white", bg="darkgrey", command=lambda: show_char_frame(prev, default_char_frame), font=("Arial", 29, "italic"))
    button_skin0.grid(row=0, column=0, pady=(0,10))

    back = Button(skin_lib, text="Back", width=15,  relief="flat", fg="white", bg="maroon", font=("Arial",29,"italic"),
                  command=lambda: [skin_lib.grid_forget(), button_grid.grid(row=1, column=0, sticky='nws')])
    back.grid(row=100, column=0)

def show_char_frame(prev, char_frame):
    skin_lib.grid_forget()
    default_char_frame.grid(row=1, column=1, sticky='nse')

default_char_frame = SkinFrame(master=root, desc='Default Skin.', requirement=0, skin_img='')

Label(root, text="Game Title", width=68, relief="flat", bg="white", fg="grey", font=("Arial",26,"italic")).grid(row=0, column=0, sticky='n')

button_grid = LabelFrame(root, bg='grey29', relief="groove", pady=10, padx=10)
button_grid.grid(row=1, column=0, sticky='nws')

skin_lib = LabelFrame(root, bg='grey29', relief="groove", pady=10, padx=10)

skins = Button(button_grid, text="Skins", width=15, relief="flat", fg="white", bg="navy", command=show_chars, font=("Arial", 29, "italic"))
skins.grid(row=2, column=0, pady=(0,10))

previous_skinframe

root.mainloop()

你錯過了 pack() 標簽來添加控制

self.desc.pack() 

這是完整的代碼

from tkinter import *

root = Tk()
root['bg'] = 'white'
root.state('zoomed')

class CharacterFrame(LabelFrame):
    def __init__(self, master, skin_img, requirement, desc):
        super().__init__(master=master, bg='grey29')
        self.desc = Label(self, text=desc)
        self.desc.pack()


default_char_frame = CharacterFrame(master=root, desc='Default Character.', requirement=0, skin_img='')
default_char_frame.grid(row=0, column=0, sticky='nse')

root.mainloop()

在這段代碼中,我添加self.desc.pack()來顯示

這是輸出在此處輸入圖像描述

暫無
暫無

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

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