質問編集履歴

3

タイトル変更およびタグ追加

2020/01/12 04:37

投稿

surphy
surphy

スコア101

test CHANGED
@@ -1 +1 @@
1
- tkinterで多数の入力した値をgetする方法
1
+ tkinterで入力した値をfor文で変数に代入する方法
test CHANGED
File without changes

2

質問の背景を追加

2020/01/12 04:37

投稿

surphy
surphy

スコア101

test CHANGED
@@ -1 +1 @@
1
- 数をリストから生成する方法 python
1
+ tkinterで多の入力した値getする方法
test CHANGED
@@ -1,3 +1,187 @@
1
+ GUIを作成しています。
2
+
3
+
4
+
5
+ 入力した値を変数にいれていきたいのですが、今は次のようにひたすら書いています。
6
+
7
+ ```python
8
+
9
+ x0 = int(entries['x0'].get())
10
+
11
+ y0 = int(entries['y0'].get())
12
+
13
+ nx = int(entries['nx'].get())
14
+
15
+ ny = int(entries['ny'].get())
16
+
17
+ Px_small = int(entries['Px_small'].get())
18
+
19
+ Py_small = int(entries['Py_small'].get())
20
+
21
+ Px_large = int(entries['Px_large'].get())
22
+
23
+ Py_large = int(entries['Py_large'].get())
24
+
25
+ ```
26
+
27
+ このような書き方をfor文などですっきりできないかと思っているのですが、何か方法ありますでしょうか。
28
+
29
+
30
+
31
+ なお、https://teratail.com/questions/234591#reply-341552の質問の続きでもあります。
32
+
33
+
34
+
35
+ 現在のコード全体は、次となっています。
36
+
37
+ ```python
38
+
39
+ import sys
40
+
41
+ import tkinter
42
+
43
+ import numpy as np
44
+
45
+ import matplotlib.pyplot as plt
46
+
47
+
48
+
49
+
50
+
51
+ labels = 'x0', 'y0', 'nx', 'ny', 'Px_small', 'Py_small', 'Px_large', 'Py_large'
52
+
53
+ entries = {}
54
+
55
+
56
+
57
+ root = tkinter.Tk()
58
+
59
+ root.title(u"GUI_test") #name
60
+
61
+
62
+
63
+ for label in labels:
64
+
65
+ tkinter.Label(text=label).pack() #make label
66
+
67
+ entries[label] = tkinter.Entry() #input
68
+
69
+ entries[label].pack()
70
+
71
+ if label=='x0' or label=='y0':
72
+
73
+ entries[label].insert(tkinter.END, 0) #set initial values
74
+
75
+ elif label=='Px_small' or label=='Py_small':
76
+
77
+ entries[label].insert(tkinter.END, 200) #set initial values
78
+
79
+ elif label=='Px_large' or label=='Py_large':
80
+
81
+ entries[label].insert(tkinter.END, 400) #set initial values
82
+
83
+
84
+
85
+
86
+
87
+ def generate_xy(x0, y0, nx, ny, Px_small, Py_small, Px_large, Py_large):
88
+
89
+ x = []
90
+
91
+ y = []
92
+
93
+ for i in range(nx):
94
+
95
+ for j in range(ny):
96
+
97
+ x_center = x0 - i*Px_large
98
+
99
+ y_center = y0 - j*Py_large
100
+
101
+ x.append(x_center + Px_small/2)
102
+
103
+ y.append(y_center + Py_small/2)
104
+
105
+ x.append(x_center + Px_small/2)
106
+
107
+ y.append(y_center - Py_small/2)
108
+
109
+ x.append(x_center - Px_small/2)
110
+
111
+ y.append(y_center - Py_small/2)
112
+
113
+ x.append(x_center - Px_small/2)
114
+
115
+ y.append(y_center + Py_small/2)
116
+
117
+ return x, y
118
+
119
+
120
+
121
+
122
+
123
+ def caliculate():
124
+
125
+ x0 = int(entries['x0'].get())
126
+
127
+ y0 = int(entries['y0'].get())
128
+
129
+ nx = int(entries['nx'].get())
130
+
131
+ ny = int(entries['ny'].get())
132
+
133
+ Px_small = int(entries['Px_small'].get())
134
+
135
+ Py_small = int(entries['Py_small'].get())
136
+
137
+ Px_large = int(entries['Px_large'].get())
138
+
139
+ Py_large = int(entries['Py_large'].get())
140
+
141
+ x, y = generate_xy(x0, y0, nx, ny, Px_small, Py_small, Px_large, Py_large)
142
+
143
+ for label in labels:
144
+
145
+ print(label + ':' + entries[label].get())
146
+
147
+ fig = plt.figure(figsize=(5,5))
148
+
149
+ ax = fig.add_subplot(1,1,1)
150
+
151
+ ax.scatter(x,y)
152
+
153
+ ax.set_title('first scatter plot')
154
+
155
+ ax.set_xlabel('x')
156
+
157
+ ax.set_ylabel('y')
158
+
159
+ ax.set_ylim([-1000, 1000])
160
+
161
+ ax.set_xlim([-1000, 1000])
162
+
163
+ fig.show()
164
+
165
+
166
+
167
+
168
+
169
+ tkinter.Button(text='Submit', command=caliculate).pack()
170
+
171
+
172
+
173
+ root.mainloop()
174
+
175
+
176
+
177
+ ```
178
+
179
+
180
+
181
+
182
+
183
+ ------修正前の質問-------
184
+
1
185
  variable_name = ['x', 'y']
2
186
 
3
187
  というリストから、

1

誤字修正

2020/01/12 04:36

投稿

surphy
surphy

スコア101

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- valuable_name = ['x', 'y']
1
+ variable_name = ['x', 'y']
2
2
 
3
3
  というリストから、
4
4