|
|
|
# -*- encoding: utf-8 -*-
|
|
|
|
"""
|
|
|
|
@Author: packy945
|
|
|
|
@FileName: input.py
|
|
|
|
@DateTime: 2023/7/19 16:59
|
|
|
|
@SoftWare: PyCharm
|
|
|
|
"""
|
|
|
|
import tkinter as tk
|
|
|
|
from tkinter import *
|
|
|
|
import numpy as np
|
|
|
|
|
|
|
|
import data as gl_data
|
|
|
|
from fitting import selfdata_show
|
|
|
|
|
|
|
|
global top
|
|
|
|
def input_num(root_tk):
|
|
|
|
global top
|
|
|
|
top = tk.Toplevel(root_tk)
|
|
|
|
label1 = Label(top, text="坐标点个数")
|
|
|
|
label1.grid(row=0) # 这里的side可以赋值为LEFT RTGHT TOP BOTTOM
|
|
|
|
num1 = IntVar()
|
|
|
|
entry1 = Entry(top, textvariable=num1)
|
|
|
|
num1.set(0)
|
|
|
|
entry1.grid(row=0, column=1)
|
|
|
|
Label(top, text=" ").grid(row=0, column=3)
|
|
|
|
Button(top, text="确定", command=lambda: input_data(root_tk, int(entry1.get()))).grid(row=0, column=3)
|
|
|
|
top.mainloop()
|
|
|
|
def input_data(root_tk, num):
|
|
|
|
global top
|
|
|
|
sample_x = []
|
|
|
|
sample_y = []
|
|
|
|
sample_data = []
|
|
|
|
top.destroy()
|
|
|
|
top = tk.Toplevel(root_tk)
|
|
|
|
|
|
|
|
def add_sample_data():
|
|
|
|
try:
|
|
|
|
x = float(entry_x.get())
|
|
|
|
y = float(entry_y.get())
|
|
|
|
except:
|
|
|
|
label_status.config(text="输入不合法")
|
|
|
|
return
|
|
|
|
entry_x.delete(0, tk.END)
|
|
|
|
entry_y.delete(0, tk.END)
|
|
|
|
if min(x, y) < gl_data.LOW or max(x, y) > gl_data.HIGH:
|
|
|
|
label_status.config(text="输入超过范围")
|
|
|
|
return
|
|
|
|
elif len(sample_data) < num:
|
|
|
|
label_status.config(text="点对已添加")
|
|
|
|
sample_data.append((x, y))
|
|
|
|
sample_x.append(x)
|
|
|
|
sample_y.append(y)
|
|
|
|
else:
|
|
|
|
label_status.config(text="已达到最大数量")
|
|
|
|
def check_sample_data():
|
|
|
|
if len(sample_data) == num:
|
|
|
|
label_status.config(text="已达到最大数量")
|
|
|
|
gl_data.X = np.array(sample_x)
|
|
|
|
gl_data.Y = np.array(sample_y)
|
|
|
|
print('已添加', sample_data)
|
|
|
|
top.destroy()
|
|
|
|
selfdata_show(gl_data.X, gl_data.Y, gl_data.LOW, gl_data.HIGH)
|
|
|
|
else:
|
|
|
|
label_status.config(text="还需输入{}个点对".format(num - len(sample_data)))
|
|
|
|
print(sample_data)
|
|
|
|
|
|
|
|
label_x = tk.Label(top, text="X 值:")
|
|
|
|
label_x.pack()
|
|
|
|
entry_x = tk.Entry(top)
|
|
|
|
entry_x.pack()
|
|
|
|
label_y = tk.Label(top, text="Y 值:")
|
|
|
|
label_y.pack()
|
|
|
|
entry_y = tk.Entry(top)
|
|
|
|
entry_y.pack()
|
|
|
|
button_add = tk.Button(top, text="添加", command=add_sample_data)
|
|
|
|
button_add.pack()
|
|
|
|
button_check = tk.Button(top, text="检查", command=check_sample_data)
|
|
|
|
button_check.pack()
|
|
|
|
label_status = tk.Label(top, text="")
|
|
|
|
label_status.pack()
|
|
|
|
top.mainloop()
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
root = tk.Tk()
|
|
|
|
input_num(root)
|