Tkinter:模糊的透明背景帧

时间:2017-10-25 13:46:49

标签: python tkinter background transparency blur

我正在编写一个使用tkinter的Python应用程序,我试图让它看起来更像是新的W10应用程序。
使用tkinter,我可以使用bg将图像应用为帧背景或纯色,甚至可以使用alpha使框架或整个窗口透明。 为了让UI看起来更好,我已使用此参数borderwidth=0,highlightthickness = 0, bd = 0删除了按钮的边框 但我还没有找到任何可以制作模糊透明框架背景的东西。与航空或新的W10应用程序相同。 使用alpha我可以更改不透明度,但不能更改模糊 有没有办法让我的应用程序看起来像我描述的那样?

2 个答案:

答案 0 :(得分:2)

不幸的是,该服务在tkinter中只是一个争论的问题,并不是它提供的。但是,您可以访问here来了解如何在应用程序中使用高斯模糊方法。

答案 1 :(得分:2)

好吧,这在tkinter中是完全不可能的,但是等等我并不是说不可能。

您只需要执行以下操作-

注意:仅当您在无边框的全屏窗口中使用您的应用程序时,此方法才有效。

让我们看看如何-我将使用KIVY,所以请下载它。

如果您有kivy,请跳过此kivy安装指南:

记住:Kivy仅在python 2.7、3.7和3.4中受支持,因此 卸载 python,如果有任何版本不匹配。知道当前 python版本在cmd中输入“ python版本”。

步骤1)。在cmd中输入“ pip install kivy”

步骤2)。安装过程中可能会出现问题,因此我说的是不支持的python版本。

1)。需要以下软件包,因此如果您没有任何软件包,请下载它们。

  • PIL pip install PIL
  • pyautogui pip install pyautogui

2)。说明:在Python中,使用起来有点困难 DWM(桌面窗口管理器)API,可帮助模糊后面的窗口。然而, 在C ++中,有一个名为EnableBlurBehind()的内置函数可以使用DWM API来模糊后面的窗口。

  • 首先,我们将使用pyautogui软件包截屏
  • 然后模糊图像(屏幕截图或背景)
  • 最后,在画布上设置图像。

Voila!您已经模糊了后面的窗户。因此,让我们使该概念生效。

仅在您下载了所需的库之后,复制并粘贴到IDE中

  • 主要python文件,另存为name.py
# first take the screenshot else problem will occur
import pyautogui
# take screenshot
screenshot = pyautogui.screenshot()
screenshot.save('screenshot.png')

# import other required libraries
from PIL import Image, ImageFilter
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.widget import Widget
from PIL import Image, ImageFilter
from win32api import GetSystemMetrics
from kivy.animation import Animation


# set window size
Window.borderless = True
Window.size = GetSystemMetrics(0), GetSystemMetrics(1)
Window.left = 0
Window.top = 0


class Blur(Widget):

    # Transparent Blur Window Exmple the screenshot
    get_image = Image.open('screenshot.png')
    blur_image = get_image.filter(ImageFilter.GaussianBlur(radius=15))
    blur_image.save('blured.png')

    def anim(self):
        animator = Animation(x=1800, y=500)
        animator.start(self.ids.animate)


class Build(App):
    def build(self):
        return Blur()


Build().run()
  • KV Language file另存为build.kv,否则将不起作用
<Blur>:
    canvas.before:
        Rectangle:
            pos: self.pos
            size: self.size
            source: 'blured.png'
    Button:
        id: animate
        text: 'Here, you can add anything you want now. Click me!'
        bold: True
        italic: True
        pos: 700, 500
        font_size: 25
        size: 400, 300
        background_color: 0,0,0,0
        on_press: root.anim()

如果您不知道如何在IDE中打开file.kv,请搜索它。解决您遇到的任何非常规问题。