如何添加阴影到tkinter帧?

2024-06-01 05:27:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用tkinter来创建一个材质设计风格的GUI,如下所示(取自LOOT mod organizer thingy):

enter image description here

目前,我有一个框架作为灰色背景和另一个白色框架,将保存我的内容,我的目标是添加一个阴影到这个白色的框架,因为没有一个标准的浮雕选项接近。这可能吗?在

到目前为止,我试着把我的白色框架放在一张带有阴影图像的画布中,但我无法获得图像的位置或大小接近我想要的位置。在

有趣的是,OptionMenu小部件的下拉列表确实有阴影:

enter image description here

虽然我不确定这是因为tkinter还是因为窗户


Tags: 图像框架mod内容风格tkintergui背景
1条回答
网友
1楼 · 发布于 2024-06-01 05:27:01

我在打包小部件时利用了选项padx和{}创建了一个解决方案。效果并不完全是你所说的,但你可能想尝试其他选择的组合。在

import tkinter as tk


class MDLabel(tk.Frame):

    def __init__(self, parent=None, **options):
        tk.Frame.__init__(self, parent, bg=options["sc"])  # sc = shadow color
        self.label = tk.Label(self, text=options["text"], padx=15, pady=10)
        self.label.pack(expand=1, fill="both", padx=(0, options["si"]), pady=(0, options["si"]))  # shadow intensity


root = tk.Tk()
root.geometry("600x300+900+200")

main_frame = tk.Frame(root, bg="white")
body_frame = tk.Frame(main_frame)

for i in range(3):
    md_label = MDLabel(body_frame, sc="grey", si=1, text="Label " + str(i))
    md_label.pack(expand=1, fill="both", pady=5)

body_frame.pack(expand=1, fill="both", pady=5, padx=5)
main_frame.pack(expand=True, fill="both")

root.mainloop()

结果如下(在Mac OS X上,Sierra):

enter image description here

相关问题 更多 >