【问题标题】:builtins.AttributeError: 'int' object has no attribute 'create_line'builtins.AttributeError:“int”对象没有属性“create_line”
【发布时间】:2014-10-31 18:44:25
【问题描述】:

我有这个图形代码,将用于在其上绘制不同的点。但是,当我为 x 轴设置我的数轴时,我不断收到一个 int 错误。

from tkinter import *

def checkered(canvas, line_distance):
   for x in range(line_distance,canvas_width,line_distance):
      canvas.create_line(x, 0, x, canvas_height, fill="#476042")
   for y in range(line_distance,canvas_height,line_distance):
      canvas.create_line(0, y, canvas_width, y, fill="#476042")
###############################################################################
root = Tk()
canvas_width = 1000
canvas_height = 760
w = Canvas(root, 
           width=canvas_width,
           height=canvas_height)
checkered(w,20)           
w.pack()

a = int(canvas_height / 2)
w.create_line(0, a, canvas_width, a, 
               fill="black",width=3)
b = int(canvas_width / 2)
w.create_line(b, 0, b,canvas_height, 
              fill = "red",width=3)
w.create_text(5, ((canvas_height/2)-10)
              ,text="x",font=12)
w.create_text(b+10 ,5
              ,text='y',font=12)
w.create_text(b+10,a-10
              ,text='0',font=12)
w.create_oval(b-5,a-5,b+5,a+5 
              ,fill = 'black')
w=int(canvas_width/50)
z=int(canvas_width/100)
aa=b+w
bb=a-z
cc=a+z 
w.create_line(aa,bb,aa,cc,
              fill='black',width=3)

mainloop()

每当我运行程序时,我都会收到以下消息:

line 37, in <module>
builtins.AttributeError: 'int' object has no attribute 'create_line'

这对我来说没有意义,因为 'int' 在第 19 行和第 22 行有效:

a = int(canvas_height / 2)
w.create_line(0, a, canvas_width, a, 
               fill="black",width=3)

b = int(canvas_width / 2)
w.create_line(b, 0, b,canvas_height, 
              fill = "red",width=3)

这些行运行良好,只是最后一行行不通。任何帮助将不胜感激。

【问题讨论】:

    标签: python python-3.x tkinter int attributeerror


    【解决方案1】:

    您将w 设置为整数:

    w=int(canvas_width/50)
    z=int(canvas_width/100)
    aa=b+w
    bb=a-z
    cc=a+z 
    

    那么在下一行仍然期望它是Canvas

    w.create_line(aa,bb,aa,cc,
                  fill='black',width=3)
    

    使用更好的变量名;例如,使用canvas 而不是w,您就不会那么容易被重用名称所欺骗。

    【讨论】:

    • 谢谢,我对这个程序有点茫然。欣赏它
    猜你喜欢
    • 1970-01-01
    • 2017-01-01
    • 2020-03-22
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多