質問編集履歴

3

補足

2019/04/26 17:05

投稿

yep
yep

スコア45

test CHANGED
File without changes
test CHANGED
@@ -235,3 +235,5 @@
235
235
  ```
236
236
 
237
237
  教えていただいたコードでgui画面を作ってみました。
238
+
239
+ 正常に動きました。

2

追記

2019/04/26 17:05

投稿

yep
yep

スコア45

test CHANGED
File without changes
test CHANGED
@@ -105,3 +105,133 @@
105
105
  col_vars.append(col_var)
106
106
 
107
107
  の部分でName is not definedになってしまいます。
108
+
109
+
110
+
111
+ 追記:
112
+
113
+ ```python
114
+
115
+ from tkinter import *
116
+
117
+ import tkinter.ttk as ttk
118
+
119
+ import tkinter
120
+
121
+ import tkinter.filedialog as filedialog
122
+
123
+ import pandas as pd
124
+
125
+ import os,codecs
126
+
127
+
128
+
129
+ class FiledialogApp(ttk.Frame):
130
+
131
+
132
+
133
+ def __init__(self, app):
134
+
135
+ super().__init__(app)
136
+
137
+ self.pack()
138
+
139
+
140
+
141
+ self.filename = StringVar()
142
+
143
+
144
+
145
+ label = ttk.Label(self,text="File>>")
146
+
147
+ label.pack(side="left")
148
+
149
+ filenameEntry = ttk.Entry(self,text="",textvariable= self.filename)
150
+
151
+ filenameEntry.pack(side="left")
152
+
153
+
154
+
155
+ button = ttk.Button(self,text="Select",command = self.openFileDialog)
156
+
157
+ button.pack(side="left")
158
+
159
+
160
+
161
+ button_c = ttk.Button(self, text="Close",command = quit)
162
+
163
+ button_c.pack(side="left")
164
+
165
+
166
+
167
+ def openFileDialog(self):
168
+
169
+ # ファイルダイアログにより処理対象のファイルパスを選ばせる
170
+
171
+ filepath = filedialog.askopenfilename(filetypes=[(".csv","*.csv")]);
172
+
173
+ self.filename.set(filepath)
174
+
175
+ # ファイルを読み込む
176
+
177
+ with codecs.open(filepath, "r", "cp932", "ignore") as file:
178
+
179
+ df = pd.read_table(file, delimiter=",", skipinitialspace=True)
180
+
181
+ columns = df.columns.values
182
+
183
+ # データフレーム上の列数分だけ Checkbotton を生成すると仮定
184
+
185
+ col_vars = []
186
+
187
+ for i, column in enumerate(columns):
188
+
189
+ col_var = tkinter.IntVar()
190
+
191
+ col_vars.append(col_var)
192
+
193
+ cb = ttk.Checkbutton(variable=col_var, text=column)
194
+
195
+ cb.place(x=50, y=30 + (i * 24))
196
+
197
+
198
+
199
+ # ボタンのハンドラー関数
200
+
201
+ def on_start_button():
202
+
203
+ for i, column in enumerate(columns):
204
+
205
+ checked = 'checked' if col_vars[i].get() else 'is not checked'
206
+
207
+ print(f"{column} column {checked}")
208
+
209
+ # 必要に応じて何かする
210
+
211
+
212
+
213
+ button_1 = ttk.Button(text='Start!', command=on_start_button)
214
+
215
+ button_1.place(x=5, y=250)
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+ if __name__ == '__main__':
224
+
225
+ app = Tk()
226
+
227
+ app.geometry("400x300")
228
+
229
+ app.title("Select your file[.csv]")
230
+
231
+ frame = FiledialogApp(app)
232
+
233
+ app.mainloop()
234
+
235
+ ```
236
+
237
+ 教えていただいたコードでgui画面を作ってみました。

1

補足

2019/04/26 17:02

投稿

yep
yep

スコア45

test CHANGED
File without changes
test CHANGED
@@ -73,3 +73,35 @@
73
73
  ```
74
74
 
75
75
  もしご存知の方がいらっしゃれば、ご教授頂きたく存じます。
76
+
77
+ ```python
78
+
79
+ def do_something():
80
+
81
+ sub_win = Toplevel()
82
+
83
+ col_var = tkinter.IntVar()
84
+
85
+ if col_vars[0].get():
86
+
87
+ col_var = []
88
+
89
+ for i, cn in enumerate(columns):
90
+
91
+ col_var = tkinter.IntVar()
92
+
93
+ col_vars.append(col_var)
94
+
95
+ col = tkinter.Checkbutton(sub_win, variable=col_var, text=cn)
96
+
97
+ col.place(x=50, y=30 + (i * 24))
98
+
99
+ if col_vars[1].get():#繰り返し
100
+
101
+ ```
102
+
103
+ KSwordOfHasteさんに教えていただいた情報を基に作成したインスタント部分です。
104
+
105
+ col_vars.append(col_var)
106
+
107
+ の部分でName is not definedになってしまいます。