这是我正在编写的程序,应该在窗口中显示一些文本...
import pyglet
from pyglet import window
from pyglet.text.layout import TextLayout
class Window(pyglet.window.Window):
def __init__(self):
super(Window, self).__init__(width = 800, height = 600,
caption = "Prototype")
self.disclaimer = pyglet.text.Label("Hello World",
font_name = 'Times New Roman',
font_size=36,
color = (255, 255, 255, 255),
x = TextLayout.width / 2,
y = TextLayout.height / 2,
anchor_x='center', anchor_y='center')
def on_draw(self):
self.clear()
self.disclaimer.draw()
if __name__ == '__main__':
window = Window()
pyglet.app.run()
...但是每次我尝试运行它时都会出现此错误
line 16
x = TextLayout.width / 2,
TypeError: unsupported operand type(s) for /: 'property' and 'int'
我很确定这意味着我试图划分一个字符串,但在 Pyglet 文档中它说宽度和高度是整数。我不知道我做错了什么。
最佳答案
TextLayout
是一个类——所以TextLayout.width
是一个原始属性,对您来说毫无用处;您希望从 TextLayout
类的实例 获取宽度
,而不是从类本身获取!此外,该类专门用于布置文本文档,所以我真的不明白您为什么要获取它(因为您周围没有文档对象)。
我怀疑你真正想要的是:
x = self.width / 2,
y = self.height / 2,
并删除 TextLayout
的导入和所有提及。
关于python - 类型错误:不支持的操作数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3126436/