tkinter更改系统标题栏, 任务栏上有显示!!!!!!(windows)

        链接:  tkinter如何在Windows系统上正确自定义窗口 - 知乎

                    说实话, 看到这个文章的时候我真的太激动, 太高兴了, 也让我知道了一个事情就是有问题的时候一定要多个平台找找

2023/6/12:

如何将置顶的小白条去掉

        如果你是从上面链接中出来的, 你会发现其中所展现的窗口最顶上依旧会有一个难看的无法更改的小白条, 这个时候只要在 style 加上 & ~win32con.WS_THICKFRAME

(代码是链接中的, 在这里我直接加上去了)

from tkinter import Tk
from win32gui import GetParent, SetWindowPos, UpdateWindow, SetWindowLong, GetWindowLong, ReleaseCapture, SendMessage
from win32con import NULL, SWP_NOSIZE, SWP_NOMOVE, SWP_NOZORDER, SWP_DRAWFRAME, GWL_STYLE, WS_CAPTION, WM_SYSCOMMAND, SC_MOVE, HTCAPTION, WS_THICKFRAME

root = Tk()

def titlebar(window):
    hWnd = GetParent(window.winfo_id())
    SetWindowLong(hWnd, GWL_STYLE, GetWindowLong(hWnd, GWL_STYLE) & ~WS_CAPTION & ~WS_THICKFRAME)
    SetWindowPos(hWnd, NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_DRAWFRAME)
    UpdateWindow(hWnd)

def windowMove(widget, window):
    def move():
        ReleaseCapture()
        SendMessage(GetParent(window.winfo_id()), WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0)

    widget.bind("<B1-Motion>", lambda event: move())

windowMove(root, root)
root.after(100, lambda: titlebar(root))
root.mainloop()

结果你会发现那个最上面的小白条就没有了

在使用过程中发现使用geometry的时候出现窗口卡顿:

        将原先的 geometry 方法改为 ( window 是窗口):

hwnd = win32gui.GetParent(window.winfo_id())
win32gui.SetWindowPos(hwnd, win32con.HWND_TOP, x, y, 0, 0, win32con.SWP_NOSIZE | win32con.SWP_NOZORDER)

        最后我想说tkinter库最大的一个问题解决了, 这也就意味着tkinter不光有着高自由度, 还有着很好的语法结构, tkinter真的好用!

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值