2016-04-22 13 views
1

キャンバスにキューを使用してシェイプを追加する方法が混乱しました。私は三角形を追加しようとしています。これは私が持っているコードです。エラーが発生しました>>> AttributeError: 'Queue'オブジェクトに「エンキュー」属性がありませんキューを使用してキャンバスにシェイプを追加する

私はこれをしばらく試してきましたが、私は正しい考えを持っていると思っています。

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() 
+0

これらのパラメータxとy:それらは本当にwとhではありませんか? – rocksteady

+0

ええ、彼らは混乱のためにごめんなさい申し訳ありません –

+0

あなたのケースでは "create_arc"はcreate_arc(0,0、w、h、fill = "green")のように呼び出されます。 :エラー>>> _tkinter.TclError:間違った#座標:0または4が予想され、3が返されました – rocksteady

答えて

0

モジュールの場合queue私は関数enqueue()は表示されません。

queue.Queue.put()があります。

更新

それはPythonがモジュールのキューの中からいずれかを意味し、「間違った」Queueを取っていることを、可能ですか?

更新

たぶん「QUEUE1」のような別の何かにあなたのクラス「キュー」をリネームすることから始めます。

モジュールのqueue.Queueを使用してください。あなただけのlist funcitonalitiesを使用し、スタックを使用する場合は

更新

、ノークラスのスタックが必要です:

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

ちょうどあなたがそれをスタックに見えること.pop()を使用することにより。

+0

はこれではありませんenque関数def enqueue(self、item): self.items.insert(0、item) –

+0

self.queueの型は自分自身で定義されたクラスではありませんQueue 、しかしキュー.Queue、私は思う。そしてqueue.Queueはenqueue(...)という関数を提供せず、put(...)のみを提供します。 – rocksteady

+0

これは次の行です:** self.queue = Queue()** – rocksteady

関連する問題