如何使用 Python 在屏幕上显示纯文本(透明背景,没有菜单栏或按钮)?
How to display TEXT ONLY (transparent background, with no menu bar or buttons) on screen using Python?
我一直在到处寻找这种简单的解决方案,但仍然找不到。
我只想在屏幕上仅显示一些文本,没有背景或使用带有菜单 bar/buttons 的“消息框”。只是文字,仅此而已。也许有一种方法可以为字体设置颜色以及我希望文本为浅灰色。使用 Windows 10 和 Python 3.8+.
我看过 easygui(消息框,使用按钮)、PySimpleGUI(到目前为止最好的选择,如下所示,但默认为白色背景)、Tkinter 和 pygame(但我不知道如何使用这些软件包设置我要查找的内容。
这是我使用 PySimpleGui 的结果,如果可能的话,我希望它能成为透明背景!
def popup_message(message):
sg.popup(str(message),
title = None,
button_color = 'white',
background_color = None,
text_color = 'grey85',#'light gray',
button_type = 5,
auto_close = True,
auto_close_duration = 20,
custom_text = (None, None),
non_blocking = False,
icon = None,
line_width = None,
font = None,
no_titlebar = True,
grab_anywhere = True,
keep_on_top = True,
location = (None, None),
relative_location = (250, 250),
any_key_closes = True,
image = None,
modal = True)
更新
这是我使用 Tkinter 得到的最接近的结果。现在的问题是菜单栏仍然可见,并且使用标签 class 会导致纯色背景。我如何才能在 PYTHON 中仅在屏幕上显示文本!?我什至不确定我的做法是否正确,但似乎是一个非常基本的想法?
# Import the Tkinter Library
from tkinter import *
# Create an instance of Tkinter Frame
root = Tk()
# Create a Label to print some text
label = Label(root, text="This is a New Line Text", font= ('Helvetica 14 bold'), foreground= "red3")
label.pack()
# Create a transparent window
root.wm_attributes('-transparentcolor','#add123')
# Set the geometry of window
root.geometry("700x350")
# Add a background color to the Main Window
root.config(bg = '#add123')
root.mainloop()
您正在尝试制作一种没有 title-menu.
的屏幕,在这种情况下,我可以通过告诉您使用 root.overrideredirect(True)
来帮助您,这是代码的关键部分。
在没有背景的情况下绘制文本有两种选择。
第一种是使用 canvas 绘制文本,如下所示。使用这种方法,如果您关心可调整大小,则每次调整 window 大小时都必须自己将文本居中。
canvas.create_text(x, y, "Text with no bg!")
第二种方法是使用内部有空 img 的禁用按钮。
img = PhotoImage(file="file.png")
b = tk.Button(root, text="My Text", image=img, relief="FLAT", state="DISABLED")
b.image = img
b.pack()
查看此 了解更多信息。
如果您还有其他问题,请告诉我。
不支持 popup
中 Text
的透明背景。
需要在PySimpleGUI中自己定义的新弹出功能。
- 将
Text
元素的选项 background_color
设置为一种指定的透明度颜色,例如“#add123”。
- 将
Window
中的选项 transparent_color
设置为指定的透明度颜色。
- 在
Window
中设置选项 no_titlebar
以隐藏标题栏。
以下代码显示方式
import PySimpleGUI as sg
def popup(message):
global win
if win:
win.close()
layout = [[sg.Text(message, background_color=bg, pad=(0, 0))]]
win = sg.Window('title', layout, no_titlebar=True, keep_on_top=True,
location=(1000, 200), auto_close=True, auto_close_duration=3,
transparent_color=bg, margins=(0, 0))
event, values = win.read(timeout=0)
return win
bg = '#add123'
sg.set_options(font=("Courier New", 24))
layout = [[sg.Button('POPUP')]]
window = sg.Window('title', layout)
win = None
while True:
event, value = window.read()
if event == sg.WIN_CLOSED:
break
elif event == 'POPUP':
win = popup('Here is the message.')
window.force_focus()
if win:
win.close()
window.close()
我一直在到处寻找这种简单的解决方案,但仍然找不到。
我只想在屏幕上仅显示一些文本,没有背景或使用带有菜单 bar/buttons 的“消息框”。只是文字,仅此而已。也许有一种方法可以为字体设置颜色以及我希望文本为浅灰色。使用 Windows 10 和 Python 3.8+.
我看过 easygui(消息框,使用按钮)、PySimpleGUI(到目前为止最好的选择,如下所示,但默认为白色背景)、Tkinter 和 pygame(但我不知道如何使用这些软件包设置我要查找的内容。
这是我使用 PySimpleGui 的结果,如果可能的话,我希望它能成为透明背景!
def popup_message(message):
sg.popup(str(message),
title = None,
button_color = 'white',
background_color = None,
text_color = 'grey85',#'light gray',
button_type = 5,
auto_close = True,
auto_close_duration = 20,
custom_text = (None, None),
non_blocking = False,
icon = None,
line_width = None,
font = None,
no_titlebar = True,
grab_anywhere = True,
keep_on_top = True,
location = (None, None),
relative_location = (250, 250),
any_key_closes = True,
image = None,
modal = True)
更新
这是我使用 Tkinter 得到的最接近的结果。现在的问题是菜单栏仍然可见,并且使用标签 class 会导致纯色背景。我如何才能在 PYTHON 中仅在屏幕上显示文本!?我什至不确定我的做法是否正确,但似乎是一个非常基本的想法?
# Import the Tkinter Library
from tkinter import *
# Create an instance of Tkinter Frame
root = Tk()
# Create a Label to print some text
label = Label(root, text="This is a New Line Text", font= ('Helvetica 14 bold'), foreground= "red3")
label.pack()
# Create a transparent window
root.wm_attributes('-transparentcolor','#add123')
# Set the geometry of window
root.geometry("700x350")
# Add a background color to the Main Window
root.config(bg = '#add123')
root.mainloop()
您正在尝试制作一种没有 title-menu.
的屏幕,在这种情况下,我可以通过告诉您使用 root.overrideredirect(True)
来帮助您,这是代码的关键部分。
在没有背景的情况下绘制文本有两种选择。 第一种是使用 canvas 绘制文本,如下所示。使用这种方法,如果您关心可调整大小,则每次调整 window 大小时都必须自己将文本居中。
canvas.create_text(x, y, "Text with no bg!")
第二种方法是使用内部有空 img 的禁用按钮。
img = PhotoImage(file="file.png")
b = tk.Button(root, text="My Text", image=img, relief="FLAT", state="DISABLED")
b.image = img
b.pack()
查看此
不支持 popup
中 Text
的透明背景。
需要在PySimpleGUI中自己定义的新弹出功能。
- 将
Text
元素的选项background_color
设置为一种指定的透明度颜色,例如“#add123”。 - 将
Window
中的选项transparent_color
设置为指定的透明度颜色。 - 在
Window
中设置选项no_titlebar
以隐藏标题栏。
以下代码显示方式
import PySimpleGUI as sg
def popup(message):
global win
if win:
win.close()
layout = [[sg.Text(message, background_color=bg, pad=(0, 0))]]
win = sg.Window('title', layout, no_titlebar=True, keep_on_top=True,
location=(1000, 200), auto_close=True, auto_close_duration=3,
transparent_color=bg, margins=(0, 0))
event, values = win.read(timeout=0)
return win
bg = '#add123'
sg.set_options(font=("Courier New", 24))
layout = [[sg.Button('POPUP')]]
window = sg.Window('title', layout)
win = None
while True:
event, value = window.read()
if event == sg.WIN_CLOSED:
break
elif event == 'POPUP':
win = popup('Here is the message.')
window.force_focus()
if win:
win.close()
window.close()