繁体   English   中英

Tkinter 在制作新框架时无法准确反映 kwargs。 如何更改继承框架背景颜色?

[英]Tkinter won't accurately reflect kwargs when making a new frame. How do I change inheriting frame background color?

在我的代码中,我创建了一个名为HistoryFrame的 object ,它应该继承自tkinter.Frame 我想将我的HistoryFrame的背景颜色更改为在其创建时传入的参数,并且当我打印 kwargs 时,它准确地反映了我在 {'bg':'blue', etc...} ,但它不会改变框架背景的实际颜色。

我该如何解决? 为什么会这样?

以下代码生成的应用程序图片。 代码如下。 V---V

import tkinter as tk

class HistoryFrame(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        print(kwargs)
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent

        button = tk.Button(self, text="hello", fg="blue")
        button.pack(side=tk.TOP, fill=tk.X)



class MainApplication(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent

        self.width, self.height = max(parent.winfo_screenwidth(), 200), max(
            parent.winfo_screenheight(), 200
        )

        self.history_frame = HistoryFrame.HistoryFrame(
            self, width=max(20, self.width // 4), height=self.height, bg="blue"
        )
        self.history_frame.pack(side=tk.LEFT, fill=tk.X)


if __name__ == "__main__":
    root = tk.Tk()
    root.geometry("650x250")
    MainApplication(root).pack(side="top", fill="both", expand=True)
    root.mainloop()

你的颜色工作正常。 默认情况下,当您使用packgrid将一个或多个小部件添加到框架时,框架将缩小以适合其子级。 颜色在那里,只是框架被按钮隐藏了。

您可以通过更改包装框架的方式来观察这一点:

self.history_frame.pack(side=tk.LEFT, fill="both", expand=True)

截屏

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM