前提・実現したいこと
初心者です。
図形を入力した値に合わせてturtleで書くということをしています。
turtleのペンの色をtkinterのリストボックスから選択して変更しようとしましたが、以下のようなエラーが出てしまいました。
ご教示いただけると幸いです。よろしくお願いします。
発生している問題・エラーメッセージ
tkinter.TclError: invalid command name ".!frame.!listbox"
該当のソースコード
python
1import tkinter as tk 2from turtle import* 3from tkinter import StringVar 4 5root = tk.Tk() 6root.geometry('300x300') 7frame = tk.Frame(root, width=300, height=300, bg="white") 8frame.place(x=100, y=140) 9lblL = tk.Label(text='ペンの色') 10lblL.place(x=25, y=140) 11 12 13var = StringVar(value=['black', 'red', 'blue', 'yellow', 'pink']) 14listbox = tk.Listbox(frame, 15 listvariable=var, 16 height=5) 17listbox.pack() 18 19lbl0 = tk.Label(text='x角形') 20lbl0.place(x=25,y=40) 21txt0 = tk.Entry(width=20) 22txt0.place(x=100, y=40) 23 24lbl3 = tk.Label(text='一辺の長さ') 25lbl3.place(x=25,y=60) 26txt3 = tk.Entry(width=20) 27txt3.place(x=100, y=60) 28 29lbl2 = tk.Label(text='x角形の数') 30lbl2.place(x=25,y=80) 31txt2 = tk.Entry(width=20) 32txt2.place(x=100, y=80) 33 34lbl1 = tk.Label(text='描きたい円の数') 35lbl1.place(x=25,y=100) 36txt1 = tk.Entry(width=20) 37txt1.place(x=100, y=100) 38 39lbl4 = tk.Label(text='半径') 40lbl4.place(x=25,y=120) 41txt4 = tk.Entry(width=20) 42txt4.place(x=100, y=120) 43 44 45def col(): 46 if len(listbox.curselection()) == 0: 47 return 48 index = listbox.curselection()[0] 49 pencolor(listbox.get(index)) 50 51def draw(): 52 get_txt0 = txt0.get() 53 get_txt2 = txt2.get() 54 get_txt3 = txt3.get() 55 for i in range(int(get_txt2)): 56 left(360 / int(get_txt2)) 57 for i in range(int(get_txt0)): 58 forward(int(get_txt3)) 59 left(360 / int(get_txt0)) 60 61 62 63 64 65def do(): 66 get_txt1 = txt1.get() 67 get_txt4 = txt4.get() 68 for i in range(int(get_txt1)): 69 circle(int(get_txt4)) 70 left(360 / int(get_txt1)) 71 72 73 74 done() 75hideturtle() 76btn = tk.Button(text = '実行', command=lambda:[draw(), do(), col()],bg='RoyalBlue2',fg='green2') 77btn.pack(fill = 'x', padx=30) 78 79 80tk.mainloop() 81
試したこと
エラーメッセージを調べたり、代用のコードがないか調べました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/08 10:18