質問
自動的に起動させる機能のうちの設定部分を作っていますがうまくいきません。
問題のコード
python383rc1
1def user_list_up(): 2 global users 3 global all_users 4 users=subprocess.run(['powershell.exe', '-command', '(Get-WmiObject Win32_UserAccount).name'],encoding='utf-8',capture_output=True) 5 all_users=users.stdout.split() 6 7def btn_settei_click(): 8 global settei_butto 9 global auto_up 10 global users 11 global all_users 12 13 tki_settei_log = tkinter.Toplevel() 14 tki_settei_log.geometry('300x300') 15 tki_settei_log.title('設定') 16 canvas = tkinter.Canvas(tki_settei_log) 17 18 settei_button = tkinter.IntVar() 19 settei_button.set(auto_up) 20 21 auto_on = tkinter.Radiobutton(tki_settei_log, value=0, variable=settei_button, text='ON') 22 auto_on.place(x=20, y=50) 23 auto_off = tkinter.Radiobutton(tki_settei_log, value=1, variable=settei_button, text='OFF') 24 auto_off.place(x=20, y=70) 25 26 auto_up_ravel = tkinter.Label(tki_settei_log,text='PCを立ち上げたときと同時にこのアプリも起動する') 27 auto_up_ravel.place(x=20, y=25) 28 29 user_list_up() 30 31 # Frame Widgetを 生成 32 frame = tkinter.Frame(canvas) 33 34 a = [tkinter.BooleanVar()] * len(all_users) 35 z = [tkinter.Checkbutton()] * len(all_users) 36 37 for i in range(0,len(all_users)-1): 38 z[i] = tkinter.Checkbutton(frame, text=all_users[i]) 39 z[i].grid(column=0, row=i) 40 41 setti_check_button = tkinter.Button(tki_settei_log, text='確定', command=btn_check_click) 42 setti_check_button.place(x=250, y=270) 43 44 tki_settei_log.mainloop() 45 46
のコードを実行しても、チェックボタンが生成されません。
len(all_users)は6のはずなのに動きません。
なのに下のコードならいけました。
listは禁止なのでしょうか?
import tkinter root = tkinter.Tk() root.geometry("500x500") # Canvas Widget を生成 canvas = tkinter.Canvas(root) # Top Widget上に Scrollbar を生成して配置 bar = tkinter.Scrollbar(root, orient=tkinter.VERTICAL) bar.pack(side=tkinter.RIGHT, fill=tkinter.Y) bar.config(command=canvas.yview) # ScrollbarでCanvasを制御 # Canvas Widget をTopWidget上に配置 canvas.config(yscrollcommand=bar.set) # Canvasのサイズ変更をScrollbarに通知 canvas.config(scrollregion=(0,0,500,500)) #スクロール範囲 canvas.pack(side=tkinter.LEFT, fill=tkinter.BOTH, expand=True) # Frame Widgetを 生成 frame = tkinter.Frame(canvas) # Frame Widgetを Canvas Widget上に配置() canvas.create_window((0,0), window=frame, anchor=tkinter.NW, width=500, height=500) # Frame Widget上に各種ラベルを表示 a0 = tkinter.Checkbutton(frame, text='box') a0.grid(column=0, row=0) a1 = tkinter.Checkbutton(frame, text='box') a1.grid(column=0, row=1) a2 = tkinter.Checkbutton(frame, text='box') a2.grid(column=0, row=2) a3 = tkinter.Checkbutton(frame, text='box') a3.grid(column=0, row=3) root.mainloop()
環境
tkinterあり
subprocessあり
python3.8.3rc1 IDLE
windows10 home
![guest](/img/icon/icnUserSample.jpg)
回答1件
あなたの回答
tips
プレビュー