我正在尝试使用pygame编写可以绘制线条的应用程序。该代码段如下所示-grapher.py
some code...
x = 500
class graph():
def drawgrid(step, t = 1):
for i in range(0, x//step):
pygame.draw.line(win, (0, 0, 255), (i*step, 0), (i*step, y), t)
pygame.draw.line(win, (0, 0, 255), (0, i*step), (x, i*step), t)
pygame.display.update()
graph.drawgrid()
只是绘制一个网格,每行均匀地隔开一些像素(值存储在step
变量中)。当我在同一python文件(
graph.drawgrid()
)中运行grapher.py
时,它可以按预期工作。但是现在,我想在另一个文件(
main.py
)中运行该函数。该代码段如下-main.py
import grapher
import pygame
x = 500
draw = grapher.graph()
win = pygame.display.set_mode((x, y))
pygame.display.set_caption("Graph")
run = True
while(run):
pygame.time.delay(100)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
draw.drawgrid(50)
pygame.quit()
我调用了函数,并且该函数被调用,但是在该过程中,函数(
graph.drawgrid()
)在被调用时也会引发以下错误- for i in range(0, 500//step):
TypeError: unsupported operand type(s) for //: 'int' and 'graph'
而且,当我将
for i in range(0, x//step):
更改为for i in range(0, x//int(step)):
现在引发此错误-
for i in range(0, 500//int(step)):
TypeError: int() argument must be a string, a bytes-like object or a number, not 'graph'
我不知道为什么会这样,有人能告诉我我要去哪里哪里以及解决办法吗?
最佳答案
您在drawgrid函数中缺少self
参数。
class graph:
def drawgrid(self, step, t = 1):
for i in range(0, x//step):
pygame.draw.line(win, (0, 0, 255), (i*step, 0), (i*step, y), t)
pygame.draw.line(win, (0, 0, 255), (0, i*step), (x, i*step), t)
pygame.display.update()
类中每个函数的第一个参数始终是调用该方法的实例。在您的情况下,您在函数定义中没有该参数,因此将其分配给step。
编辑:这是site对其进行更详细的说明。
关于python - TypeError:////'int'和'graph'不支持的操作数类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61888743/