【问题标题】:Make tkinter window draw on top of fullscreen applications使 tkinter 窗口在全屏应用程序之上绘制
【发布时间】:2021-07-27 23:04:35
【问题描述】:

我想知道是否有办法在全屏应用程序上绘制 tkinter 窗口,到目前为止我有这个:

from tkinter import *

#MAIN WINDOW
root = Tk()
root.title('Test Title')
root.geometry("500x200")
root.wm_attributes('-transparentcolor', root['bg'])
root.wm_attributes("-topmost", 1)


my_frame = Frame(root, width=500, height=200)
my_frame.pack(pady=20, ipady=20, ipadx=20)

#STAT TEXT
my_label = Label(my_frame, font=("Helvetica", 40), fg="#09d2f6")
my_label.config(text="TEST TEXT")
my_label.pack(pady=20)


root.mainloop()

这会将窗口绘制在所有应用程序之上,但不是全屏应用程序。我的想法是有一个循环,它会不断地将窗口向前推进,但不知道如何做到这一点。

【问题讨论】:

  • 您也许可以使用 tkinter after() 小部件方法重复调度对执行 root.wm_attributes("-topmost", 1) 的函数的调用
  • 问题在于你提到的全屏窗口,必须设置为-topmost', not just fullscreen`。我将发布一个全屏背景和您的代码一起运行的示例 - 没有问题。

标签: python tkinter


【解决方案1】:

此代码将使您能够选择要全屏查看的图片。

您的代码将在其上方以透明模式运行 - 没问题

按退出键退出

尝试使用标题按钮使您的小部件全屏显示奇怪的效果!

由于filedialog 对结果的影响,必须对其进行编辑。

移动了属性设置,以便在加载图像后调用它。

import os
import tkinter as tk
from tkinter import filedialog

def closer( ev ):
    ev.widget.destroy()

# FULL SCREEN
master = tk.Tk()
master.rowconfigure( 0, weight = 1 )
master.columnconfigure( 0, weight = 1 )

master.bind( "<Escape>", closer )

pathfile = filedialog.askopenfilename( title = 'pick mage' )

my_image = tk.PhotoImage( file = pathfile ).zoom( 2,2 )
label = tk.Label( master, text = 'Image', compound = "top", image = my_image )
label.grid(row=0, column=0,sticky='nsew')

master.wm_attributes("-fullscreen", 1)
# removed for first time use - unrem this for second time
# master.wm_attributes("-topmost", 1)

# Your code

root = tk.Toplevel(master)
root.title('Test Title')
root.geometry("500x200")

root.bind( "<Escape>", closer )

root.wm_attributes('-transparentcolor', root['bg'])
root.wm_attributes("-topmost", 1)

my_frame = tk.Frame(root, width=500, height=200)
my_frame.pack(pady=20, ipady=20, ipadx=20)

#STAT TEXT
my_label = tk.Label(my_frame, font=("Helvetica", 40), fg="#09d2f6")
my_label.config(text="TEST TEXT")
my_label.pack(pady=20)

master.mainloop()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    相关资源
    最近更新 更多