■やりたいこと
1、 ラジオボタンにて帯域を選択したあと、チェックボックスを選択し、
【測定開始】ボタンを押した際に、常に前面に表示されるウィンドウを作りたい。
2、 サブウィンドウの中に「停止」ボタンを作りたい(ボタン作成のコードは作成したが反映しない)
■現状
【測定開始】ボタンを押した際に、一番最初に表示させたいサブウィンドウが、一番最後に表示されてしまう。
サブウィンドウの中に一つボタンを作りたいのだが、コードが反映していない。
python
1 2from tkinter import * 3from tkinter import ttk 4from time import sleep 5 6root = Tk() 7root.title('測定CH設定') 8root.geometry("500x860+710+40") 9 10Lframe1 = ttk.Labelframe(root, text='測定帯域選択', padding=5) 11Lframe1.grid(row=0, column=0, columnspan=1, padx=15, pady=10, sticky='w') 12Lframe2 = ttk.Labelframe(root, text='2.4GHz',padding=5) 13Lframe2.grid(row=1,column=0, columnspan=1, padx=15, pady=10, sticky='nw') 14Lframe3 = ttk.Labelframe(root, text='5GHz',padding=5) 15Lframe3.grid(row=1,column=1, columnspan=1, padx=10, pady=10, sticky='w') 16 17selected_frame = IntVar() 18 19def change_selected_frame(): 20 if selected_frame.get() == 0: 21 22 for child in Lframe2.winfo_children(): 23 child.configure(state='enable') 24 for child in Lframe3.winfo_children(): 25 child.configure(state='disable') 26 27 elif selected_frame.get() == 1: 28 for child in Lframe2.winfo_children(): 29 child.configure(state='disable') 30 for child in Lframe3.winfo_children(): 31 child.configure(state='enable') 32 33 else: 34 for child in Lframe2.winfo_children(): 35 child.configure(state='disable') 36 for child in Lframe3.winfo_children(): 37 child.configure(state='disable') 38 39Rbutton1 = ttk.Radiobutton(Lframe1, text='2.4GHz ', variable=selected_frame, value=0, command=change_selected_frame) 40Rbutton1.grid(row=1,column=0,pady=5) 41Rbutton2 = ttk.Radiobutton(Lframe1,text='5GHz', variable=selected_frame, value=1, command=change_selected_frame) 42Rbutton2.grid(row=1,column=1,pady=5) 43 44class val_2G: 45 def __init__(self,name,set_frame,row_no): 46 self.bool=BooleanVar() 47 self.bool.set(False) 48 self.name=name 49 self.Cbtn=ttk.Checkbutton(set_frame, text=self.name, variable=self.bool) 50 self.Cbtn.grid(row=row_no,column=0, columnspan=1, padx=15, pady=5, sticky='w') 51 52class val_5G: 53 def __init__(self,name,set_frame,row_no): 54 self.bool=BooleanVar() 55 self.bool.set(False) 56 self.name=name 57 self.Cbtn=ttk.Checkbutton(set_frame, text=self.name, variable=self.bool) 58 self.Cbtn.grid(row=row_no,column=0, columnspan=1, padx=15, pady=5, sticky='w') 59 60val_2G1=val_2G('CH1',Lframe2,6) 61val_2G2=val_2G('CH2',Lframe2,7) 62val_2G3=val_2G('CH3',Lframe2,8) 63val_2G4=val_2G('CH4',Lframe2,9) 64val_2G5=val_2G('CH5',Lframe2,10) 65val_2G6=val_2G('CH6',Lframe2,11) 66val_2G7=val_2G('CH7',Lframe2,12) 67val_2G8=val_2G('CH8',Lframe2,13) 68val_2G9=val_2G('CH9',Lframe2,14) 69val_2G10=val_2G('CH10',Lframe2,15) 70val_2G11=val_2G('CH11',Lframe2,16) 71val_2G12=val_2G('CH12',Lframe2,17) 72val_2G13=val_2G('CH13',Lframe2,18) 73val_2G_list=[val_2G1, val_2G2, val_2G3, val_2G4, val_2G5, val_2G6, val_2G7, val_2G8, val_2G9, val_2G10, val_2G11, val_2G12, val_2G13] 74 75val_5G36=val_5G('CH36',Lframe3,6) 76val_5G40=val_5G('CH40',Lframe3,7) 77val_5G44=val_5G('CH44',Lframe3,8) 78val_5G48=val_5G('CH48',Lframe3,9) 79val_5G52=val_5G('CH52',Lframe3,10) 80val_5G56=val_5G('CH56',Lframe3,11) 81val_5G60=val_5G('CH60',Lframe3,12) 82val_5G64=val_5G('CH64',Lframe3,13) 83val_5G100=val_5G('CH100',Lframe3,14) 84val_5G104=val_5G('CH104',Lframe3,15) 85val_5G108=val_5G('CH108',Lframe3,16) 86val_5G112=val_5G('CH112',Lframe3,17) 87val_5G116=val_5G('CH116',Lframe3,18) 88val_5G120=val_5G('CH120',Lframe3,19) 89val_5G124=val_5G('CH124',Lframe3,20) 90val_5G128=val_5G('CH128',Lframe3,21) 91val_5G132=val_5G('CH132',Lframe3,22) 92val_5G136=val_5G('CH136',Lframe3,23) 93val_5G140=val_5G('CH140',Lframe3,24) 94val_5G_list=[val_5G36, val_5G40, val_5G44, val_5G48, val_5G52, val_5G56,val_5G60, val_5G64, val_5G100, val_5G104, val_5G108, val_5G112, val_5G116, val_5G120, val_5G124, val_5G128, val_5G132, val_5G136, val_5G140] 95 96 97def check_all_2G_checkboxes(): 98 for val in val_2G_list: 99 val.bool.set(True) 100 101def clear_all_2G_checkboxes(): 102 for val in val_2G_list: 103 val.bool.set(False) 104 105def check_all_5G_checkboxes(): 106 for val in val_5G_list: 107 val.bool.set(True) 108 109def clear_all_5G_checkboxes(): 110 for val in val_5G_list: 111 val.bool.set(False) 112 113def sub_window(): 114 sub_window = Toplevel() 115 sub_window.title('緊急停止') 116 sub_window.attributes("-topmost", True) 117 sub_window.geometry("600x300+660+400") 118 btn = ttk.Button(text='停止', padding=5) ##ボタンが作成されない 119 120def check_box(): 121 global checkbox 122 123 sub_window() ##一番最初に表示し緊急停止ボタンのように動かしたいのだが、一番最後に表示されてしまう 124 125 selected_channels2 = [] 126 selected_channels5 = [] 127 128 if selected_frame.get() == 0: 129 for val in val_2G_list: 130 if val.bool.get(): 131 selected_channels2.append(val.name) 132 133 elif selected_frame.get() == 1: 134 for val in val_5G_list: 135 if val.bool.get(): 136 selected_channels5.append(val.name) 137 138 if len(selected_channels2) > 0: 139 measure_channels2(selected_channels2) 140 141 elif len(selected_channels5) > 0: 142 measure_channels5(selected_channels5) 143 144def measure_channels2(channels2): 145 for channel2 in channels2: 146 ch2 = channel2[2:] 147 print(f'チャンネル {ch2} を測定中') 148 sleep(5) 149 print("測定終了") 150 151def measure_channels5(channels5): 152 for channel5 in channels5: 153 ch5 = channel5[2:] 154 print(f'チャンネル {ch5} を測定中') 155 sleep(5) 156 print("測定終了") 157 158def quit(): 159 global checkbox 160 checkbox.destroy() 161 162btn1 = ttk.Button(Lframe2, text='全選択', padding=5, command=check_all_2G_checkboxes) 163btn1.grid(row=5,column=0,pady=5) 164btn2 = ttk.Button(Lframe2, text='全解除', padding=5, command=clear_all_2G_checkboxes) 165btn2.grid(row=5,column=1,pady=5) 166btn3 = ttk.Button(Lframe3, text='全選択', padding=5, command=check_all_5G_checkboxes) 167btn3.grid(row=5,column=0,pady=5) 168btn4 = ttk.Button(Lframe3, text='全解除', padding=5, command=clear_all_5G_checkboxes) 169btn4.grid(row=5,column=1,pady=5) 170btn5 = ttk.Button(text='測定開始', padding=5, command=check_box) 171btn5.grid(row=5,column=0,pady=5) 172btn6 = ttk.Button(text='キャンセル', padding=5, command=quit) 173btn6.grid(row=5,column=1,pady=5) 174selected_frame.set(-1) 175change_selected_frame() 176 177root.mainloop() 178 179
記述方法ご存知の方いらっしゃいましたら、ご教授頂けると幸いです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/03 07:05