質問編集履歴
2
解決したため
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
解決しましたお手数をおかけしました
|
test
CHANGED
@@ -1,99 +1,16 @@
|
|
1
|
-
|
1
|
+
解決しました
|
2
|
-
|
2
|
+
ありがとうございました
|
3
|
-
プログラミング初心者です。
|
4
|
-
PythonでGUIを作成している最中なのですが、指定したフォルダ内でのファイル作成の仕方、そのファイルへの書きだし方が分からないのでわかる方教えていただきたいです。ボタン2の処理の仕方が分かりません。
|
5
3
|
|
6
|
-
### 実現したいこと
|
7
4
|
|
8
|
-
GUIにて作成したボタンを押すことで、チェックボタンやラジオボタンの結果をファイル名(data.csv)というファイルとして書き出し、追記方式で保存できるようにする。ボタン2の処理方法のコードを教えていただきたいです。
|
9
5
|
|
10
|
-
### 発生している問題・エラーメッセージ
|
11
6
|
|
12
|
-
```
|
13
|
-
Exception in Tkinter callback
|
14
|
-
Traceback (most recent call last):
|
15
|
-
File "C:\Users\owner\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1892, in __call__
|
16
|
-
return self.func(*args)
|
17
|
-
File "C:/usr/home/iot2022/ex3_2.py", line 14, in btn2_clk
|
18
|
-
f1.write(rdo.get(),',',chk1.get(),',',chk2.get())
|
19
|
-
TypeError: TextIOWrapper.write() takes exactly one argument (5 given)
|
20
|
-
```
|
21
7
|
|
22
|
-
### 該当のソースコード
|
23
8
|
|
24
|
-
import pathlib
|
25
|
-
import tkinter as tk
|
26
|
-
from tkinter import Entry, filedialog
|
27
9
|
|
28
|
-
def btn1_clk(event):
|
29
|
-
dirname = filedialog.askdirectory( title='フォルダを開く', initialdir='./' )
|
30
|
-
ent.delete( 0, tk.END )
|
31
|
-
ent.insert( 0, dirname )
|
32
10
|
|
33
|
-
def btn2_clk(event):
|
34
|
-
pathlib.Path(ent.get())
|
35
|
-
path1 = pathlib.Path('data.csv')
|
36
|
-
f1 = open('data.csv',mode='a')
|
37
|
-
f1.write(rdo.get(),',',chk1.get(),',',chk2.get())
|
38
|
-
f1.close
|
39
|
-
|
40
11
|
|
41
|
-
root = tk.Tk()
|
42
|
-
root.title('アンケート')
|
43
|
-
root.geometry('250x300')
|
44
12
|
|
45
|
-
lbl = tk.Label( text='性別' )
|
46
|
-
lbl.place(x=20,y=10)
|
47
|
-
rdo = tk.IntVar()
|
48
|
-
rbtn_1=tk.Radiobutton(value=0, variable=rdo, text='男')
|
49
|
-
rbtn_1.place(x=50, y=30)
|
50
|
-
rbtn_2=tk.Radiobutton(value=1, variable=rdo, text='女')
|
51
|
-
rbtn_2.place(x=50, y=50)
|
52
13
|
|
53
|
-
lbl2 = tk.Label( text='本学を知った手段' )
|
54
|
-
lbl2.place(x=20,y=100)
|
55
|
-
chk1=tk.BooleanVar()
|
56
|
-
cbtn1=tk.Checkbutton(variable=chk1, text='知人から聞いた')
|
57
|
-
cbtn1.place(x=50,y=120)
|
58
|
-
chk2=tk.BooleanVar()
|
59
|
-
cbtn2=tk.Checkbutton(variable=chk2, text='広告で見た')
|
60
|
-
cbtn2.place(x=50,y=145)
|
61
14
|
|
62
|
-
lbl3 = tk.Label( text='出力フォルダ' )
|
63
|
-
lbl3.place(x=20,y=190)
|
64
15
|
|
65
|
-
ent = tk.Entry( width=27 )
|
66
|
-
ent.place(x=25, y=215)
|
67
16
|
|
68
|
-
btn1 = tk.Button( text='参照' )
|
69
|
-
btn1.bind('<Button-1>', btn1_clk)
|
70
|
-
btn1.place( x=200, y=215 )
|
71
|
-
|
72
|
-
btn2 = tk.Button( text='実行', width=10 )
|
73
|
-
btn2.bind('<Button-1>', btn2_clk)
|
74
|
-
btn2.place(x=90, y=260)
|
75
|
-
|
76
|
-
root.mainloop()
|
77
|
-
|
78
|
-
### 試したこと
|
79
|
-
|
80
|
-
試したコードは、自分が分かる物を継接ぎして
|
81
|
-
def btn2_clk(event):
|
82
|
-
pathlib.Path(ent.get())
|
83
|
-
path1 = pathlib.Path('data.csv')
|
84
|
-
f1 = open('data.csv',mode='a')
|
85
|
-
f1.write(rdo.get(),',',chk1.get(),',',chk2.get())
|
86
|
-
f1.close
|
87
|
-
です。
|
88
|
-
ここ以外は正常に動くので、最後の処理であるこれだけアドバイスいただきたいです。。。
|
89
|
-
|
90
|
-
やりたいこととしては、ボタン1をクリックして選択したフォルダ内に、data.csvという追記方式のファイルを作成したいです。
|
91
|
-
ファイルの内容は、0,True,True
|
92
|
-
1,False,True
|
93
|
-
のように、print(rdo.get(),',',chk1.get(),',',chk2.get())の実行結果です。
|
94
|
-
|
95
|
-
### 補足情報(FW/ツールのバージョンなど)
|
96
|
-
|
97
|
-
勉強不足でわかりにくい説明かと思いますが、詳しい方教えていただけたら幸いです。
|
98
|
-
よろしくお願いいたします。
|
99
|
-
|
1
試したことについて追記いたしました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -77,8 +77,16 @@
|
|
77
77
|
|
78
78
|
### 試したこと
|
79
79
|
|
80
|
+
試したコードは、自分が分かる物を継接ぎして
|
80
81
|
def btn2_clk(event):
|
81
|
-
|
82
|
+
pathlib.Path(ent.get())
|
83
|
+
path1 = pathlib.Path('data.csv')
|
84
|
+
f1 = open('data.csv',mode='a')
|
85
|
+
f1.write(rdo.get(),',',chk1.get(),',',chk2.get())
|
86
|
+
f1.close
|
87
|
+
です。
|
88
|
+
ここ以外は正常に動くので、最後の処理であるこれだけアドバイスいただきたいです。。。
|
89
|
+
|
82
90
|
やりたいこととしては、ボタン1をクリックして選択したフォルダ内に、data.csvという追記方式のファイルを作成したいです。
|
83
91
|
ファイルの内容は、0,True,True
|
84
92
|
1,False,True
|