Q&A
前提
先日からtkinterの勉強を始めたのですが、うまくいかなく困っています。
実現したいこと
- ラジオボタンを左側に配置し、右側にファイル参照を置きたい。
該当のソースコード
Python
1import tkinter 2from tkinter import * 3from tkinter import ttk 4from tkinter import filedialog 5from tkinter import messagebox 6import os 7 8 9# ファイルの参照処理 10def click_refer_button(): 11 fTyp = [("","*")] 12 iDir = os.path.abspath(os.path.dirname(__file__)) 13 filepath = filedialog.askopenfilename(filetypes = fTyp, initialdir = iDir) 14 filepath.set(filepath) 15 16 17# 出力処理 18def click_export_button(): 19 path = file_path.get() 20 21def rb1_clicked(): 22 print(flg1.get()) 23 24if __name__ == '__main__': 25 # ウィンドウを作成 26 root = tkinter.Tk() 27 root.title("test") 28 root.geometry("500x500") 29 30 flg1 = StringVar() 31 flg1.set('0') 32 33 #グループB用変数 34 flg2 = StringVar() 35 36 #ラジオ1(グループA) 37 rb1 = ttk.Radiobutton(root,text='1',value=0,variable=flg1,command=rb1_clicked) 38 rb1.grid(row=1,column=0) 39 40 #ラジオ2(グループA) 41 rb2 = ttk.Radiobutton(root,text='2',value=1,variable=flg1,command=rb1_clicked) 42 rb2.grid(row=2,column=0) 43 44 #ラジオ3(グループA) 45 rb3 = ttk.Radiobutton(root,text='3',value=2,variable=flg1,command=rb1_clicked) 46 rb3.grid(row=3,column=0) 47 48 # Frame1の作成 49 frame1 = ttk.Frame(root, padding=10) 50 frame1.grid() 51 52 # 「ファイル」ラベルの作成 53 s = StringVar() 54 s.set('ファイル名:') 55 label1 = ttk.Label(frame1, textvariable=s) 56 label1.grid(row=0, column=1) 57 58 # 参照ファイルのパスを表示するテキストボックスの作成 59 file_path = StringVar() 60 filepath_entry = ttk.Entry(frame1, textvariable=file_path, width=30) 61 filepath_entry.grid(row=0, column=2) 62 63 # 参照ボタンの作成 64 refer_button = ttk.Button(frame1, text=u'参照', command=click_refer_button) 65 refer_button.grid(row=0, column=3) 66 67 # Frame2の作成 68 frame2 = ttk.Frame(root, padding=10) 69 frame2.grid() 70 71 # テキスト出力ボタンの作成 72 export_button = ttk.Button(frame2, text='開始', command=click_export_button, width=10) 73 export_button.grid(row=4, column=0) 74 75 # テキスト出力ボックスの作成 76 textboxname = StringVar() 77 textboxname.set('\n\n結果 ') 78 label3 = ttk.Label(frame2, textvariable=textboxname) 79 label3.grid(row=5, column=0) 80 textBox = Text(frame2, width=50) 81 textBox.grid(row=6, column=0) 82 83 # ウィンドウを動かす 84 root.mainloop()
試したこと
row や column の値をいろいろと変更してみましたが配置は変わるのですが、思った通りに動いてくれません。
補足情報(FW/ツールのバージョンなど)
実行結果です。
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2022/11/26 05:09
2022/11/26 06:11
2022/11/26 07:07
2022/11/26 07:17
2022/11/26 07:30