使用队列在画布中添加形状

时间:2016-04-22 21:41:08

标签: python python-3.x tkinter tkinter-canvas

我对如何在画布中使用队列添加形状感到困惑。我正在尝试添加一个三角形。这是我得到的代码。我收到错误>>> AttributeError:'Queue'对象没有属性'enqueue'

我已经尝试了一段时间了,我认为我有正确的想法,我只需要一些指导谢谢!

from tkinter import *
import random
root = Tk()
from queue import *



class Queue:
  def __init__(self):
    self.items = []
  def is_empty(self):
    return self.items == []
  def size(self):
    return len(self.items)
  def enqueue(self, item):
    self.items.insert(0, item)
  def dequeue(self):
    return self.items.pop(0)
  def peek(self):
    return self.items[0]


class Recta():
  def __init__(self, height=60, width=80): 
    self.queue = Queue()  

def create_buttons(self):
    self.button5 = Button(self.frame, text = "Add Arc", command = self.random_arc)
    self.button5.pack(side = 'left')    

def random_arc(self):
    w = random.randrange(45)
    h = random.randrange(90)
    self.queue.enqueue(self.canvas.create_arc(0,w,h,fill= "green"))

tes = Recta()
tes = Queue()
root.mainloop()

1 个答案:

答案 0 :(得分:0)

对于模块queue,我没有看到函数enqueue()。

虽然有queue.Queue.put()

<强>更新

是否有可能,python正在采用“错误的”Queue,意味着模块队列中的那个?

<强>更新

也许首先将您的班级“队列”重命名为“Queue1”之类的其他内容。

或者只使用模块中的 queue.Queue

<强>更新

如果你想使用堆栈,只需使用list功能,不需要类Stack:

stack = list()
stack.append('item1')
stack.append('item2')
stack.append('item3')
print stack.pop()
>>> 'item3'

只需使用.pop()即可使其显示为堆栈。