0
0 комментариев

Здравствуйте. Пишу маленькую гуишку, которая строит графики при загрузке файлов.

Проблема — хочу, чтобы при нажатии кнопок «Нижний предел» и «Верхний предел» в окне, где строится график, изменялся курсор, и при нажатии на график менялся на стандартный. Непонятно, потому что у FigureCanvasTkAgg нет метода config а в опциях нельзя установить курсор. Какие есть варианты?

import matplotlib
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg,
NavigationToolbar2TkAgg
from tkinter import *
 
class CustomToolbar(NavigationToolbar2TkAgg):
    toolitems = filter(lambda x: x[0] != "Home",
    NavigationToolbar2TkAgg.toolitems)
 
class GUI:
    def __init__(self, parent):
       self.parent = parent
       self.initUI()
 
    def initUI(self):
 
       f1 = Frame(self.parent, width=1000, height=500)
       f1.pack()
 
       global fig1, a, canvas
       fig1 = Figure(figsize=(6.5, 4.5))
       a = fig1.add_subplot(111)
 
       canvas = FigureCanvasTkAgg(fig1, master=self.parent)
 
       canvas.get_tk_widget().pack()
       canvas.get_tk_widget().place(x=300, y=40)
 
 
       lbl1 = Button(f1, text='Нижний предел', command=self.connect_canv)
       lbl1.pack()
       lbl1.place(x=80, y=20)
       lbl2 = Button(f1, text='Верхний предел')
       lbl2.pack()
       lbl2.place(x=80, y=50)
 
       self.entry = Entry(f1, width=10)
       self.entry.pack()
       self.entry.place(x=10, y=20)
       self.entry2 = Entry(f1, width=10)
       self.entry2.pack()
       self.entry2.place(x=10, y=50)
       self.toolbar = CustomToolbar(canvas, self.parent)
 
 
 
   def plt_g(self, values, time):
       a.clear()
       a.plot(values, time)
       a.set_title("Current graphic", fontsize=15)
       a.set_ylabel("Signal", fontsize=13)
       a.set_xlabel("N", fontsize=13)
 
       canvas.draw()
 
   def getXY(self, event):
       x, y = event.inaxes.transData.inverted().transform((event.x, event.y))
       getx = event.x
       if self.entry.get() == '':
           self.entry.insert(0, str('%1.2f' % x))
           fig1.canvas.mpl_disconnect(cid)
       else:
           pass
 
 
   def connect_canv(self):
       self.entry.delete(0, END)
       global cid
       cid = fig1.canvas.mpl_connect('button_press_event',self.getXY)
 
 
def main():
    root = Tk()
    root.geometry("1000x560")
    root.resizable(0, 0)
    app = GUI(root)
    root.mainloop()
 
 
if __name__ == '__main__':
     main()

Изменен статус публикации
Добавить комментарий