python , tk.entry
Подскажите пожалуйста. Сделал окошко в юпитере с радиобатонами и полями ввода.
В поле ввода: Value(s) moments: вводятся числа в таком стиле 1.5 3.0 или 1.5 3 или 1.5 3; 2.5 1.
Насколько я понял в опциях tk.entry только строковые переменные. Мне бы хотелось эти числа перевести в list np.array
пример кода :
from tkinter import ttk
import numpy as np
window = tk.Tk()
window.geometry('200x100')
labela = ttk.Label(window, text = "Select type curve :")
labela.grid(column = 0, row = 0)
labela.place(x=60,y=170)
labelb=ttk.Label(window, text="Value moment(s):")#.grid(column=0, row=0)
labelb.place(x=60, y=100)
labelc=ttk.Label(window, text="Factor Lande:")#.grid(column=0, row=0)
labelc.place(x=60, y=130)
def callback(selection):
z=selection
print(z)
def numval(enterval):
#s=[]
numa=valEntered.get()
#numb=float(valEntered.get())
print(type(numa),numa)#
def clearval(clearvall):
valEntered.delete(0, 'end')
def numvalg(entervalg):
g=np.array(valg.get())
print(g)
def clearvalg(clearvallg):
valg.delete(0, 'end')
def choosemoments():
if v0.get()==1:
moments='S'
elif v0.get()==2:
moments='J'
print(moments)
name = tk.StringVar()
nameg = tk.StringVar()
options = tk.StringVar()
valEntered =tk.Entry()
valg =tk.Entry()
menu = tk.OptionMenu(window, options, 'chi(T)', 'chi(T)*T', 'muieff(T)', command=callback)
options.set('chi(T)')
menu.place(x=170, y=170)
valEntered = tk.Entry(window, width=12,textvariable=name)
valEntered.bind("<Return>", numval)
valEntered.bind("<Escape>", clearval)
valEntered.place(x=170, y=100)
valg = tk.Entry(window, width=12,textvariable=nameg,state="normal" )
valg.bind("<Return>", numvalg)
valg.bind("<Escape>", clearvalg)
valg.place(x=170, y=130)
v0=tk.IntVar()
v0.set(0)
rS=tk.Radiobutton(window, text="S", variable=v0,value=1,command=choosemoments)
rJ=tk.Radiobutton(window, text="J", variable=v0,value=2,command=choosemoments)
rS.place(x=60,y=70)
rJ.place(x=100, y=70)
window.title('OneCurveGui')
window.geometry("400x300+10+10")
window.mainloop()
в принципе я могу перевести числа (с плавающей точкой) в строковой переменной в np.array или list , вот пример работающего кода
#def find_all(string,substring):
#length = len('.')
#c=0
#indexes = []
#while c < len(numa):
# if numa[c:c+1] == '.':
# f=indexes.append(c)
# c=c+1
#return indexes
#f=find_all(numa,'.')
#def numinstr(p,f):
#s=[]
#i=0
#while i<=len(f)-1:
# s.append(float(numa[f[i]-1:f[i]+2]))## g.append()np.round()
# i+=1
#else:
# print(' ')
#return s
#S=numinstr(numa,f)
#print(s)