前提・実現したいこと
チェックボックス部分にチェックを入れたり外したりすることで、機能を切り替える仕組み作りました。
これをtkinterのみでトグルボタンに置き換えて、機能を再現したいと考えていますが。
構文が思いつかず、このサイトを頼った次第です。
発生している問題・エラーメッセージ
構文が思いつかず、syntax errorしか作れていません。
該当のソースコード
組み込み先のデータです。
チェックボックス(チェックボタン?)部分のみの置き換えで記述していただければ幸いです。
python
1#tkinterのインポート 2import tkinter as tk 3 4# ウィンドウを作成 5root = tk.Tk() 6root.title("Hello, World!") 7root.geometry("500x300") 8 9b = tk.Label(text="コントロール画面") 10b.pack() 11 12def btn_click1(): 13 if( var.get() == True): 14 print('txt_1.(/・ω・)/にゃー!') 15 txt_1.insert(tk.END,'(/・ω・)/にゃー!') 16 else: 17 print('txt_1.(」・ω・)」うー!') 18 txt_1.insert(tk.END,'(」・ω・)」うー!') 19 20def btn_click2(): 21 if( var.get() == True): 22 print('txt_2.(/・ω・)/にゃー!') 23 txt_2.insert(tk.END,'(/・ω・)/にゃー!') 24 else: 25 print('txt_2.(」・ω・)」うー!') 26 txt_2.insert(tk.END,'(」・ω・)」うー!') 27 28def btn_click3(): 29 if( var.get() == True): 30 print('txt_3.(/・ω・)/にゃー!') 31 txt_3.insert(tk.END,'(/・ω・)/にゃー!') 32 else: 33 print('txt_3.(」・ω・)」うー!') 34 txt_3.insert(tk.END,'(」・ω・)」うー!') 35 36var = tk.BooleanVar() 37 38def change(): 39 if( var.get() == True): 40 button1.config(text='(/・ω・)/にゃー!') 41 button2.config(text='(/・ω・)/にゃー!') 42 button3.config(text='(/・ω・)/にゃー!') 43 else: 44 button1.config(text='(」・ω・)」うー!') 45 button2.config(text='(」・ω・)」うー!') 46 button3.config(text='(」・ω・)」うー!') 47 48def clear(): 49 txt_1.delete(0,tk.END) 50 txt_2.delete(0,tk.END) 51 txt_3.delete(0,tk.END) 52 53t_btn = tk.Checkbutton(variable=var, text="(」・ω・)」うー! / (/・ω・)/にゃー!",command = change, width=20).place(x=30, y=30) 54 55button1 = tk.Button(root, text='(」・ω・)」うー!', command=btn_click1) 56button1.place(width=80, x=30, y=80) 57button2 = tk.Button(root,text='(」・ω・)」うー!',command = btn_click2) 58button2.place(width=80, x=30, y=120) 59button3 = tk.Button(root,text='(」・ω・)」うー!',command = btn_click3) 60button3.place(width=80, x=30, y=160) 61 62Clear_button = tk.Button(root,text='クリア',command = clear) 63Clear_button.place(width=50,x=25,y=250) 64 65txt_1 = tk.Entry(width=50) 66txt_1.place(x=120, y=82) 67 68txt_2 = tk.Entry(width=50) 69txt_2.place(x=120, y=122) 70 71txt_3 = tk.Entry(width=50) 72txt_3.place(x=120, y=162) 73 74root.mainloop( )
トグルボタンは下記のHPを参考にしました。
ボタンの位置指定の書き換えも失敗しているので、その個所も教えていただければ幸いです。
Simple Tkinter Toggle Button
python
1import tkinter as tk 2 3def toggle(tog=[0]): 4 tog[0] = not tog[0] 5 if tog[0]: 6 t_btn.config(text='(/・ω・)/にゃー!') 7 else: 8 t_btn.config(text='(」・ω・)」うー!') 9root = tk.Tk() 10t_btn = tk.Button(text="(」・ω・)」うー!", width=20, command=toggle) 11t_btn.pack(pady=5) 12root.mainloop() 13
試したこと(9/21追記)
ボタンに置き換えと表示の切り替えはできるようになったが、機能の切り替えがうまくいかない。
btn_click1~3にtoggle()が切り替わった情報を入れる方法がわからない。
python
1#tkinterのインポート 2import tkinter as tk 3 4# ウィンドウを作成 5root = tk.Tk() 6root.title("Hello, World!") 7root.geometry("500x300") 8 9b = tk.Label(text="コントロール画面") 10b.pack() 11 12def btn_click1(): 13 if(toggle() == tog[0]): 14 print('txt_1.(/・ω・)/にゃー!') 15 txt_1.insert(tk.END,'(/・ω・)/にゃー!') 16 else: 17 print('txt_1.(」・ω・)」うー!') 18 txt_1.insert(tk.END,'(」・ω・)」うー!') 19 20def btn_click2(): 21 if(toggle() == tog[0]): 22 print('txt_2.(/・ω・)/にゃー!') 23 txt_2.insert(tk.END,'(/・ω・)/にゃー!') 24 else: 25 print('txt_2.(」・ω・)」うー!') 26 txt_2.insert(tk.END,'(」・ω・)」うー!') 27 28def btn_click3(): 29 if(toggle() == tog[0]): 30 print('txt_3.(/・ω・)/にゃー!') 31 txt_3.insert(tk.END,'(/・ω・)/にゃー!') 32 else: 33 print('txt_3.(」・ω・)」うー!') 34 txt_3.insert(tk.END,'(」・ω・)」うー!') 35 36 37def clear(): 38 txt_1.delete(0,tk.END) 39 txt_2.delete(0,tk.END) 40 txt_3.delete(0,tk.END) 41 42 43def toggle(tog=[0]): 44 tog[0] = not tog[0] 45 if tog[0]: 46 t_btn. config(text='(/・ω・)/にゃー!') 47 button1.config(text='(/・ω・)/にゃー!') 48 button2.config(text='(/・ω・)/にゃー!') 49 button3.config(text='(/・ω・)/にゃー!') 50 return not tog[0] 51 52 else: 53 t_btn. config(text='(」・ω・)」うー!') 54 button1.config(text='(」・ω・)」うー!') 55 button2.config(text='(」・ω・)」うー!') 56 button3.config(text='(」・ω・)」うー!') 57 return not tog[0] 58 59 60t_btn = tk.Button(text="(」・ω・)」うー!", width=20, command=toggle) 61t_btn.place(width=100,x=30, y=30) 62 63 64button1 = tk.Button(root, text='(」・ω・)」うー!', command=btn_click1) 65button1.place(width=80, x=30, y=80) 66button2 = tk.Button(root,text='(」・ω・)」うー!',command = btn_click2) 67button2.place(width=80, x=30, y=120) 68button3 = tk.Button(root,text='(」・ω・)」うー!',command = btn_click3) 69button3.place(width=80, x=30, y=160) 70 71Clear_button = tk.Button(root,text='クリア',command = clear) 72Clear_button.place(width=50,x=25,y=250) 73 74txt_1 = tk.Entry(width=50) 75txt_1.place(x=120, y=82) 76 77txt_2 = tk.Entry(width=50) 78txt_2.place(x=120, y=122) 79 80txt_3 = tk.Entry(width=50) 81txt_3.place(x=120, y=162) 82 83root.mainloop( )
回答3件
あなたの回答
tips
プレビュー