Python #root.bind(“,destroy) 类别: 标签\文本=[ “示例-30s”, “示例-120s”, “大卫计数”, “辛西娅在后面”, “米里亚姆·雷丁” ] 定义初始(自我,主): self.master=master 硕士头衔(“心肺GUI”

Python #root.bind(“,destroy) 类别: 标签\文本=[ “示例-30s”, “示例-120s”, “大卫计数”, “辛西娅在后面”, “米里亚姆·雷丁” ] 定义初始(自我,主): self.master=master 硕士头衔(“心肺GUI”,python,graph,tkinter,Python,Graph,Tkinter,#root.bind(“,destroy) 类别: 标签\文本=[ “示例-30s”, “示例-120s”, “大卫计数”, “辛西娅在后面”, “米里亚姆·雷丁” ] 定义初始(自我,主): self.master=master 硕士头衔(“心肺GUI”) self.f=图(figsize=(4,3),dpi=72) #self.f.set_facecolor('红色') self.label_index=0 self.label_text=StringVar() self.label\u t

#root.bind(“,destroy) 类别: 标签\文本=[ “示例-30s”, “示例-120s”, “大卫计数”, “辛西娅在后面”, “米里亚姆·雷丁” ] 定义初始(自我,主): self.master=master 硕士头衔(“心肺GUI”) self.f=图(figsize=(4,3),dpi=72) #self.f.set_facecolor('红色') self.label_index=0 self.label_text=StringVar() self.label\u text.set(self.label\u text[self.label\u index]) #绘图数据(self.label\u text.get()) self.cvs=FigureCanvasTkAgg(self.f,master=root) self.cvs.get_tk_widget().pack(side=TOP,fill=BOTH,expand=1) self.cvs.\u tkcanvas.pack(侧=顶部,填充=两侧,展开=1) self.lbl1=标签(master,text='Data')#非交互式标签 self.lbl1.pack(侧=左) self.lbl2=标签(主控,宽度=30,文本变量=self.Label\u text) self.lbl2.bind(“,self.cycle\u label\u text) self.lbl2.pack(侧=左) self.btn1=按钮(主控,text='Plot data') self.btn1.bind(“\ lambda label\u text:plot\u数据(self.label\u text.get()) 自包装(侧=左) self.greet_按钮=按钮(master,text=“Analyze”,command=self.greet) 自我问候按钮包(侧面=左侧) def问候(自我): 打印(“分析!”) def循环标签文字(自身、事件): self.label_index+=1 self.label_index%=len(self.label_TEXT)#环绕 self.label\u text.set(self.label\u text[self.label\u index]) 绘图数据(label\u text.get()) def绘图数据(会话名称): a=我的图形用户界面。f.添加子图(211) b=我的gui.f.add子图(212) my_gui.cvs.show() 文件路径='C:/Users/David/My Documents/cardio呼吸实验/data/' fullfilename=filepath+session_name+'.txt' data=np.loadtxt(fullfilename,skiprows=7,usecols=(0,1,2)) t=[数据中的行的行[0] v=[数据中的行为行[1] p=[数据中的行为第[2]行] a、 绘图(t、v、颜色=‘红色’) a、 设置标题(“心跳和呼吸”) a、 设置标签(“时间”) a、 设置标签(“电压(mv)” b、 图(t,p) b、 设置标签(“时间”) b、 设置标签('压力(kpa)') return#不清楚是否需要 root=tk.tk() 根几何(“500x250+100+100”) my_gui=CardioGUI(根) root.mainloop()
您能提供一个输入数据的示例吗?也许还有一个预期结果的草图?这个程序是用来显示心电图数据,来自心脏的电压信号,作为数千个样本的时间序列。数据是文本文件,我可以读取和显示。(参见data-heart.png示例)。为了回答我的问题,我创建了两个任意列表v1和v2,作为两个不同数据集的示例。它们应该显示为data1.png和data2.png。可能超出了您的需要范围,但通常当我需要生成一些绘图时,我会从python scrip调用GNUPLOT,生成图像文件,然后根据需要将它们加载到GUI中。不管怎样,我会看看matplotlib图形显示器,然后试着给出一个答案。看起来在我的声誉达到10之前,我无法发布图像。对不起,您可以添加一个链接,存在一些图像托管服务,例如
import sys
if sys.version_info[0] < 3:
    import Tkinter as tk
else:
    import tkinter as tk
from Tkinter import Label, Entry, Button, TOP, LEFT, BOTH #, Canvas, Frame, W, N, E, S

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure

import numpy as np

def plot_data(fig, dat_name):
    t = np.arange(10)
    v1 = [1,2,3,4,5,4,4,4,4,4]
    v2 = [4,4,4,4,5,4,4,3,2,1]
    if dat_name[4] == 2:
        y = v2
    else:
        y = v1
    a = fig.add_subplot(111)
    a.plot(t,y, color='red')
    a.set_title('Graph of ')    
    a.set_xlabel('time (s)')
    a.set_ylabel('voltage (mv)')

root = tk.Tk()
root.geometry("500x250+200+200")
dataname = 'data1'

f = Figure(figsize=(4,3), dpi=72)
canvas = FigureCanvasTkAgg(f, master=root)
canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)
canvas._tkcanvas.pack(side=TOP, fill=BOTH, expand=1)

#plot_data(f, dataname)

lbl = Label(root, text='Current data:  ')
lbl.pack(side=LEFT)

etr = Entry(root, width=20)
etr.pack(side=LEFT)
etr.delete(0, last=None)
etr.insert(0, dataname) # What is the first parameter for???
dataname = etr.get()

#etr_entry.bind("<Return>", entry_handler)
#btn = Button(root, text = 'Open', command=entry_handler)
#btn.pack(side=LEFT)

plot_data(f, dataname)
print('dataname = '+dataname)
root.mainloop()  
import sys
if sys.version_info[0] < 3:
    import Tkinter as tk
else:
    import tkinter as tk
from Tkinter import Label, Entry, Button, TOP, LEFT, BOTH #, Canvas, Frame, W, N, E, S

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure

import numpy as np

class ECG_Dsiplayer(tk.Frame):
    def __init__(self, master):
        tk.Frame.__init__(self, master)

        master.bind("<c>", lambda x : self.clean())#allow to test the clean function, press "c"
        master.bind("<Return>", lambda x : self.draw_data())

        self.datasetName = tk.StringVar()
        self.datasetName.set("data1") #default value
    # ____________________________________________________  
    def draw_data(self):
        self.clean()
        self._createWidgets()
        self.plot_ecg_data()
    # ____________________________________________________
    def plot_ecg_data(self):
        values = self._load_data(self.datasetName.get())
        a = self.figure.add_subplot(111)
        a.plot(np.arange(len(values)),values, color='red')
        a.set_title('Graph of ')    
        a.set_xlabel('time (s)')
        a.set_ylabel('voltage (mv)')
    # ____________________________________________________
    def _createWidgets(self):
        self.figure = Figure(figsize=(4,3), dpi=72)

        self.canvas = FigureCanvasTkAgg(self.figure, master=self)
        self.canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)
        self.canvas._tkcanvas.pack(side=TOP, fill=BOTH, expand=1)

        self.label = Label(self, text='Current data:  ')
        self.label.pack(side=LEFT)

        self.datasetEntry = Entry(self, width=20, textvariable=self.datasetName)
        self.datasetEntry.pack(side=LEFT)
    # ____________________________________________________  
    def _load_data(self, dataName):
        ## TO OVERRIDE IN ORDER TO PROVIDE A TRUE DATA LOADING SYSTEM ##
        if dataName == "data1":
            return [1,2,3,4,5,4,4,4,4,4]
        else:
            return [4,4,4,4,5,4,4,3,2,1]
    # ____________________________________________________  
    def clean(self):
        for widget in self.pack_slaves():
            widget.pack_forget()
    # ____________________________________________________


if __name__ == "__main__":
    root = tk.Tk()
    root.geometry("500x250+200+200")    

    ecg = ECG_Dsiplayer(root)
    ecg.pack(fill=BOTH, expand=1)

    ecg.draw_data()

    root.mainloop()
import numpy as np

from Tkinter import Label, Button, StringVar, LEFT, TOP, BOTH
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure

import sys
if sys.version_info[0] < 3:
    import Tkinter as tk
else:
    import tkinter as tk

def destroy(e): sys.exit()

#root.bind("<Destroy>", destroy)

class CardioGUI:
    LABEL_TEXT = [
        "Example-30s",
        "Example-120s",
        "David-counting",
        "Cynthia-following",
        "Miriam-reading"
     ]
    def __init__(self, master):
        self.master = master
        master.title("Cardiorespiratory GUI")
        self.f = Figure(figsize=(4,3), dpi=72)
#        self.f.set_facecolor('red')

        self.label_index = 0
        self.label_text = StringVar()
        self.label_text.set(self.LABEL_TEXT[self.label_index])
#        plot_data(self.label_text.get())

        self.cvs = FigureCanvasTkAgg(self.f, master=root)
        self.cvs.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)
        self.cvs._tkcanvas.pack(side=TOP, fill=BOTH, expand=1)

        self.lbl1 = Label(master, text='Data') # Non-interactive label
        self.lbl1.pack(side=LEFT)

        self.lbl2 = Label(master, width=30, textvariable=self.label_text)
        self.lbl2.bind("<Button-1>", self.cycle_label_text)
        self.lbl2.pack(side=LEFT)

        self.btn1 = Button(master, text='Plot data')
        self.btn1.bind("<Button-1>", \
          lambda label_text: plot_data(self.label_text.get()))
        self.btn1.pack(side=LEFT)

        self.greet_button = Button(master, text="Analyze", command=self.greet)
        self.greet_button.pack(side=LEFT)

    def greet(self):
        print("Analyse!")

    def cycle_label_text(self, event):
        self.label_index += 1
        self.label_index %= len(self.LABEL_TEXT) # wrap around
        self.label_text.set(self.LABEL_TEXT[self.label_index])
        plot_data(label_text.get())

def plot_data(session_name):
    a = my_gui.f.add_subplot(211)
    b = my_gui.f.add_subplot(212)

    my_gui.cvs.show()

    filepath = 'C:/Users/David/My Documents/Cardiorespiratory Experiment/data/'
    fullfilename = filepath+session_name+'.txt'

    data = np.loadtxt(fullfilename, skiprows=7, usecols=(0,1,2))
    t = [row[0] for row in data]    
    v = [row[1] for row in data]
    p = [row[2] for row in data]

    a.plot(t,v, color='red')
    a.set_title('Heartbeat and Respiration')
    a.set_xlabel('time (s)')
    a.set_ylabel('voltage (mv)')
    b.plot(t,p)
    b.set_xlabel('time (s)')
    b.set_ylabel('pressure (kpa)')
    return # Unclear whether this is needed


root = tk.Tk()
root.geometry("500x250+100+100")
my_gui = CardioGUI(root)
root.mainloop()