使用Tkinter库创建GUI来调整树回归

目录

用Tkinter创建GUI

集成Matplotlib和Tkinter 


Tkinter创建GUI

from tkinter import *
from tree_regression import *


def redraw(tolerance_error, tolerance_number):
    pass

def draw_new_tree():
    pass

root = Tk()
Label(root, text="plot place holder").grid(row=0, columnspan=3)
Label(root, text="tolerance number: ").grid(row=1, column=0)
tolerance_number_entry = Entry(root)
tolerance_number_entry.grid(row=1, column=1)
tolerance_number_entry.insert(0, '10')
Label(root, text="tolerance error: ").grid(row=2, column=0)
tolerance_error_entry = Entry(root)
tolerance_error_entry.grid(row=2, column=1)
tolerance_error_entry.insert(0, '1.0')
button = Button(root, text='redraw', command=draw_new_tree).grid(row=3, column=1, columnspan=1)
check_button_var = IntVar()
check_button = Checkbutton(root, text="model tree", variable=check_button_var)
check_button.grid(row=3, column=0, columnspan=1)

redraw.draw_data = load_data_set('sine.txt')
redraw.test_data = np.arange(min(redraw.draw_data[:, 0]),  max(redraw.draw_data[:, 0]), 0.01)

redraw(1.0, 10)

root.mainloop()

结果:

集成Matplotlib和Tkinter 

先用画布来替换之间代码中Label占位符:

redraw.f = Figure(figsize=(5, 4), dpi=100)
redraw.canvas = FigureCanvasTkAgg(redraw.f, master=root)
redraw.canvas.show()
redraw.canvas.get_tk_widget().grid(row=0, columnspan=3)

结果:

 Matplotlib和Tkinter的代码集成

完整代码:

from tkinter import *
from tree_regression import *
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import matplotlib
matplotlib.use('TkAgg')


def redraw(tolerance_error, tolerance_number):
    redraw.f.clf()
    redraw.a = redraw.f.add_subplot(111)
    if check_button_var.get():
        # 模型树
        pass
    else:
        my_tree = create_tree(redraw.draw_data, ops=(tolerance_error, tolerance_number))
        y_hat = create_forecast(my_tree, redraw.test_data)
    redraw.a.scatter(redraw.draw_data[:, 0], redraw.draw_data[:, 1], s=5)
    redraw.a.plot(redraw.test_data, y_hat, linewidth=2.0)
    redraw.canvas.show()

def get_inputs():
    try:
        tolerance_number = int(tolerance_number_entry.get())
    except:
        tolerance_number = 10
        print("enter an integer for tolerance number")
        tolerance_number_entry.delete(0, END)
        tolerance_number_entry.insert(0, '10')
    try:
        tolerance_error = float(tolerance_error_entry.get())
    except:
        tolerance_error = 1.0
        print("enter a float fot tolerance error")
        tolerance_error_entry.delete(0, END)
        tolerance_error_entry.insert(0, '1.0')
    return tolerance_number, tolerance_error

def draw_new_tree():
    tolerance_number, tolerance_error = get_inputs()
    redraw(tolerance_error, tolerance_number)

root = Tk()
redraw.f = Figure(figsize=(5, 4), dpi=100)
redraw.canvas = FigureCanvasTkAgg(redraw.f, master=root)
redraw.canvas.show()
redraw.canvas.get_tk_widget().grid(row=0, columnspan=3)
Label(root, text="tolerance number: ").grid(row=1, column=0)
tolerance_number_entry = Entry(root)
tolerance_number_entry.grid(row=1, column=1)
tolerance_number_entry.insert(0, '10')
Label(root, text="tolerance error: ").grid(row=2, column=0)
tolerance_error_entry = Entry(root)
tolerance_error_entry.grid(row=2, column=1)
tolerance_error_entry.insert(0, '1.0')
button = Button(root, text='redraw', command=draw_new_tree).grid(row=3, column=1, columnspan=1)
check_button_var = IntVar()
check_button = Checkbutton(root, text="model tree", variable=check_button_var)
check_button.grid(row=3, column=0, columnspan=1)

redraw.draw_data = load_data_set('sine.txt')
redraw.test_data = np.arange(min(redraw.draw_data[:, 0]),  max(redraw.draw_data[:, 0]), 0.01)
matplotlib.use('TkAgg')

redraw(1.0, 10)

root.mainloop()

效果:

 

CONTACT INFORMATION

E-mail: birdguan@seu.edu.cn

QQ: 46611253 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值