【发布时间】:2019-03-13 19:39:00
【问题描述】:
我有一个tkinter 窗口,我从中删除了标题栏并添加了一个自定义关闭和最小化按钮。当程序首次加载时,它不会在任务栏上显示图标。当我单击自定义最小化按钮时,它会在任务栏上创建一个图标;但是,当我单击恢复窗口时,我无法再次摆脱标题栏。
我希望图标始终显示在任务栏上,并且当程序最小化然后恢复时,我希望标题栏仍然从 .overrideredirect(1) 消失。不幸的是,我在最小化之前和之后重置标志而不使任务栏图标消失时遇到了麻烦。
请让我知道我做错了什么。谢谢!
#!/usr/bin/python3
from tkinter import *
import tkinter as tk
import datetime
import time
import math
root = tk.Tk()
root.overrideredirect(1)
def close():
root.destroy()
def minimizeWindow():
root.withdraw()
root.overrideredirect(False)
root.iconify()
root.resizable(False, False)
canvas = Canvas(root, width = 400, height = 400)
canvas.pack()
exit = Button(root, text='x', command = close)
exitWindow = canvas.create_window(10,10, window=exit)
minimize = Button(root, text='-', command = minimizeWindow)
minimizeWindow = canvas.create_window(30,10,window=minimize)
icon = PhotoImage(file='py.gif')
root.tk.call('wm', 'iconphoto', root._w, icon)
root.mainloop() # starts the mainloop
我正在尝试使其适用于 windows 和 linux。我完全去掉标题栏的原因是为了避免来自操作系统字体和窗口设置的差异。它目前在两个操作系统上都表现出相同的行为。
重申一下,我希望任务栏图标在程序启动时显示,并且我希望程序的窗口在从最小化恢复时保持其无标题栏状态。
【问题讨论】:
-
你在用这个图标做什么?它在这里根本不起作用。您是否想保留它并在自己的酒吧中使用它?
-
该图标似乎在 Linux 中有效,但在 Windows 中无效。我更关心它在第一次启动时在任务栏上显示一个图标,以及覆盖重定向。当它被最小化和恢复时,我不想显示标题栏。
-
在 Windows 上,我可以在画布上创建一个包含图标的标签。这应该对你有用。这里有理由在框架上使用画布吗?
-
是的,因为我要使用画布类来绘制一些东西
-
您仍然可以使用画布绘制一些您不需要将其用于栏的东西。除非你想在吧台上画点什么?如果您确实想在 BAR 上绘图,您仍然可以使用画布执行此操作,只需将画布对象放在条形框架中即可。
标签: python tkinter icons taskbar titlebar