我一直在谷歌搜索和查看 StackOverflow,但没有运气......
我想要的是为我正在开发的艺术项目在屏幕(而不是控制台)上显示文本。该字符串将以全屏显示——边缘到边缘的“窗口”,没有菜单栏等。该字符串将快速更新(想象一串随机字母的显示和重新绘制的速度与计算机允许的速度一样快)。字体和颜色的选择(逐个字母地选择)将是一个很好的奖励。
字符串将在屏幕上居中(不滚动)。
我是编程新手。在屏幕上显示文本似乎比我预期的要复杂得多。 :)
我遇到过使用 pygame 的解决方案,但示例代码不起作用。这是一个典型的例子:
https://www.daniweb.com/programming/software-development/code/244474/pygame-text-python
我在我的 Mac 上看到的是一个没有文本的窗口打开,代码继续运行,无限期。我遇到过的其他代码和其他库也有类似的经历。
pygame 是满足我需求的最佳选择(易于使用 Python 编程,速度快)还是有其他库更适合我的需求?
如果 pygame 是正确的方向,任何人都可以建议可以让我继续前进的示例代码吗?
谢谢,
--达林语
请您参考如下方法:
您可以使用 Tkinter 轻松完成此类操作,它包含在大多数现代 Python 安装中。例如,
import tkinter as tk
from random import seed, choice
from string import ascii_letters
seed(42)
colors = ('red', 'yellow', 'green', 'cyan', 'blue', 'magenta')
def do_stuff():
s = ''.join([choice(ascii_letters) for i in range(10)])
color = choice(colors)
l.config(text=s, fg=color)
root.after(100, do_stuff)
root = tk.Tk()
root.wm_overrideredirect(True)
root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(), root.winfo_screenheight()))
root.bind("<Button-1>", lambda evt: root.destroy())
l = tk.Label(text='', font=("Helvetica", 60))
l.pack(expand=True)
do_stuff()
root.mainloop()
点击鼠标左键退出。
这只是概念验证。要逐个字母地控制颜色和/或字体,您需要做一些更复杂的事情。您可以使用一行标签小部件(每个字母一个),或者您可以使用文本小部件。
但是,如果您在 Mac 上尝试此操作,窗口可能无法获得焦点,如前所述 here .答案here显示另一种获取全屏窗口的方法,但我怀疑它可能会遇到同样的缺陷。
root.attributes("-fullscreen", True)
这种方法的一个优点是它不需要 root.geometry 调用。
