2016-11-14 12 views
1

私のプロジェクトでスクロールバーを使用しようとしています。フレームにキャンバス内のフレームを作成し、フレーム内にラベルを配置してからスクロールするコードを作成しました。これは、コードの一部です:place_configure()missing 1必要な位置引数: 'self'

statWindow = Tk() 
statWindow.title("View Statistics") 
statWindow.config(bg = "grey") 
statWindow.geometry('600x700') 

myframe =Frame(statWindow, relief=GROOVE, width=550, height=400, bd=1) 
myframe.place(x=20, y=90) 

canvas = Canvas(myframe) 
frame = Frame(canvas) 
myscrollbar = Scrollbar(myframe, orient="vertical", command=canvas.yview) 
canvas.configure(width=530, height=400, yscrollcommand=myscrollbar.set) 

myscrollbar.pack(side="right", fill="y") 
canvas.pack(side="left") 
canvas.create_window((0, 0), window=frame, anchor='nw') 
frame.bind("<Configure>", myfunction) 

def myfunction(event): 
    global canvas 
    canvas.configure(scrollregion=canvas.bbox("all"),width=530,height=400) 

私は、コードを持っている:

Label(frame,text="hello", height=1, width=14, bg="white").grid(row=1, column=1) 

これは完璧に動作し、しかし、私は本当に(.placeを使用する必要があります) Allthough私はラベルコードを変更したときto:

Label(frame,text="hello", height=1, width=14, bg="white").place(x=10, y=10) 

ラベルが画面に表示されず、エラーが発生していないため、何も起こりません。私は、コードを変更するとき しかし:

Label(frame,text="hello", height=1, width=14, bg="white") 
Label.place(x=10, y=10) 

私はエラーを取得する:

TypeError: place_configure() missing 1 required positional argument: 'self' 

なぜ私はフレームにラベルを配置することはできませんし、どのように私はこの問題を解決することができますか? ありがとう

答えて

-1

クラス(Label)にplaceを呼び出す予定はありません。このようにしたい場合は、Labelインスタンスをいくつかの変数に割り当て、その変数にplaceを呼び出す必要があります。クラス自体ではなくクラスインスタンスに対してplaceを呼び出しているため、最初のケースで動作します。 例:どのように行うべきか:

label_name = Label(frame,text="hello", height=1, width=14, bg="white") 
label_name.place(x=10, y=10) 
+0

彼らはクラスで 'place'を呼び出していません。彼らはインスタンス上でそれを呼び出しています。 –

+0

'Label.place(x = 10、y = 10)'これはクラスで呼び出すように見えます。これに対して、 'Label(frame、text =" hello "、height = 1、width = 14、bg =" white ")。place(x = 10、y = 10)'は、期待どおりに動作しています。 – Fejs

+0

あなたは正しいです。謝罪いたします。ある場所では、彼らはそれを間違ってやっている、彼らが正しいことをしている1つの場所で。これはタイトルの質問に答えます。 –

関連する問題