teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

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

2020/01/12 04:37

投稿

surphy
surphy

スコア101

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

2

質問の背景を追加

2020/01/12 04:37

投稿

surphy
surphy

スコア101

title CHANGED
@@ -1,1 +1,1 @@
1
- 数をリストから生成する方法 python
1
+ tkinterで多の入力した値getする方法
body CHANGED
@@ -1,3 +1,95 @@
1
+ GUIを作成しています。
2
+
3
+ 入力した値を変数にいれていきたいのですが、今は次のようにひたすら書いています。
4
+ ```python
5
+ x0 = int(entries['x0'].get())
6
+ y0 = int(entries['y0'].get())
7
+ nx = int(entries['nx'].get())
8
+ ny = int(entries['ny'].get())
9
+ Px_small = int(entries['Px_small'].get())
10
+ Py_small = int(entries['Py_small'].get())
11
+ Px_large = int(entries['Px_large'].get())
12
+ Py_large = int(entries['Py_large'].get())
13
+ ```
14
+ このような書き方をfor文などですっきりできないかと思っているのですが、何か方法ありますでしょうか。
15
+
16
+ なお、https://teratail.com/questions/234591#reply-341552の質問の続きでもあります。
17
+
18
+ 現在のコード全体は、次となっています。
19
+ ```python
20
+ import sys
21
+ import tkinter
22
+ import numpy as np
23
+ import matplotlib.pyplot as plt
24
+
25
+
26
+ labels = 'x0', 'y0', 'nx', 'ny', 'Px_small', 'Py_small', 'Px_large', 'Py_large'
27
+ entries = {}
28
+
29
+ root = tkinter.Tk()
30
+ root.title(u"GUI_test") #name
31
+
32
+ for label in labels:
33
+ tkinter.Label(text=label).pack() #make label
34
+ entries[label] = tkinter.Entry() #input
35
+ entries[label].pack()
36
+ if label=='x0' or label=='y0':
37
+ entries[label].insert(tkinter.END, 0) #set initial values
38
+ elif label=='Px_small' or label=='Py_small':
39
+ entries[label].insert(tkinter.END, 200) #set initial values
40
+ elif label=='Px_large' or label=='Py_large':
41
+ entries[label].insert(tkinter.END, 400) #set initial values
42
+
43
+
44
+ def generate_xy(x0, y0, nx, ny, Px_small, Py_small, Px_large, Py_large):
45
+ x = []
46
+ y = []
47
+ for i in range(nx):
48
+ for j in range(ny):
49
+ x_center = x0 - i*Px_large
50
+ y_center = y0 - j*Py_large
51
+ x.append(x_center + Px_small/2)
52
+ y.append(y_center + Py_small/2)
53
+ x.append(x_center + Px_small/2)
54
+ y.append(y_center - Py_small/2)
55
+ x.append(x_center - Px_small/2)
56
+ y.append(y_center - Py_small/2)
57
+ x.append(x_center - Px_small/2)
58
+ y.append(y_center + Py_small/2)
59
+ return x, y
60
+
61
+
62
+ def caliculate():
63
+ x0 = int(entries['x0'].get())
64
+ y0 = int(entries['y0'].get())
65
+ nx = int(entries['nx'].get())
66
+ ny = int(entries['ny'].get())
67
+ Px_small = int(entries['Px_small'].get())
68
+ Py_small = int(entries['Py_small'].get())
69
+ Px_large = int(entries['Px_large'].get())
70
+ Py_large = int(entries['Py_large'].get())
71
+ x, y = generate_xy(x0, y0, nx, ny, Px_small, Py_small, Px_large, Py_large)
72
+ for label in labels:
73
+ print(label + ':' + entries[label].get())
74
+ fig = plt.figure(figsize=(5,5))
75
+ ax = fig.add_subplot(1,1,1)
76
+ ax.scatter(x,y)
77
+ ax.set_title('first scatter plot')
78
+ ax.set_xlabel('x')
79
+ ax.set_ylabel('y')
80
+ ax.set_ylim([-1000, 1000])
81
+ ax.set_xlim([-1000, 1000])
82
+ fig.show()
83
+
84
+
85
+ tkinter.Button(text='Submit', command=caliculate).pack()
86
+
87
+ root.mainloop()
88
+
89
+ ```
90
+
91
+
92
+ ------修正前の質問-------
1
93
  variable_name = ['x', 'y']
2
94
  というリストから、
3
95
  x = 'x'

1

誤字修正

2020/01/12 04:36

投稿

surphy
surphy

スコア101

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