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