[分享] 基于Python的示波器的截屏GUI界面_完善版
1534 查看
7 回复
 楼主 | 发布于 2018-04-25 | 只看楼主
分享到:
import time
import Tkinter as tk
from Tkinter import *
import ttk
from tkFileDialog import askdirectory

class ScreenCapture(object):
    """
    Name the file and class after the measurement in scorecard
    """
    def __init__(self):
        self.idn = self.__class__.__name__
        # Instrument Initialisation
        self.timestamp = time.strftime('%d-%b-%Y_%I.%M.%S_%p')
        self.results_folder = '%s%s%s' % ('./EvalData/', self.timestamp, '/')

    def gui_setup(self):
        # Title and window size
        win = Tk()
        win.title("Screen Capture GUI")
        win.geometry('500x400')

        # CH Name Setting
        def set_label1():
            text1.get()
            print(text1.get())
        Button(win, text='CH1:LABEL:NAME', command = set_label1).grid(column=0, row=0)
        #set CHx Label
        text1 = tk.Entry(width = 10)
        text1.grid(column=1, row=0)
        text1.insert(INSERT,'LX1')

        def set_label2():
            text2.get()
            print(text2.get())
        Button(win, text='CH2:LABEL:NAME', command = set_label2).grid(column=0, row=1)
        text2 = tk.Entry(width = 10)
        text2.grid(column=1, row=1)
        text2.insert(INSERT,'VOUT')

        def set_label3():
            text3.get()
            print(text3.get())
        Button(win, text='CH3:LABEL:NAME', command = set_label3).grid(column=0, row=2)
        text3 = tk.Entry(width = 10)
        text3.grid(column=1, row=2)
        text3.insert(INSERT,'LX2')

        def set_label4():
            text4.get()
            print(text4.get())
        Button(win, text='CH4:LABEL:NAME', command = set_label4).grid(column=0, row=3)
        text4 = tk.Entry(width = 10)
        text4.grid(column=1, row=3)
        text4.insert(INSERT, 'IOUT')

        # CH Offset Setting
        def set_offset1(*args):
            ch1offset.get()
            print(ch1offset.get())
        tk.Label(win, text="CH1 Offset").grid(column=2, row=0)
        ch1offset = StringVar()
        ch1offset_set = Scale(win, from_=0, to=2, orient=HORIZONTAL, resolution=0.01, tickinterval=100, length=100, variable=ch1offset, command=set_offset1)
        ch1offset_set.grid(column=3, row=0)

        def set_offset2(*args):
            ch2offset.get()
            print(ch2offset.get())
        tk.Label(win, text="CH2 Offset").grid(column=2, row=1)
        ch2offset = StringVar()
        ch2offset_set = Scale(win, from_=0, to=2, orient=HORIZONTAL, resolution=0.01, tickinterval=10, length=100, variable=ch2offset, command=set_offset2)
        ch2offset_set.grid(column=3, row=1)

        def set_offset3(*args):
            ch3offset.get()
            print(ch3offset.get())
        tk.Label(win, text="CH3 Offset").grid(column=2, row=2)
        ch3offset = StringVar()
        ch3offset_set = Scale(win, from_=0, to=2, orient=HORIZONTAL, resolution=0.01, tickinterval=10, length=100, variable=ch2offset, command=set_offset3)
        ch3offset_set.grid(column=3, row=2)

        def set_offset4(*args):
            ch4offset.get()
            print(ch4offset.get())
        tk.Label(win, text="CH4 Offset").grid(column=2, row=3)
        ch4offset = StringVar()
        ch4offset_set = Scale(win, from_=0, to=2, orient=HORIZONTAL, resolution=0.01, tickinterval=10, length=100, variable=ch4offset, command=set_offset4)
        ch4offset_set.grid(column=3, row=3)

        # Input Voltage setting
        def set_vin(*args):
            print(vin_set.get())
        tk.Label(win, text="INPUT VOLTAGE[V]").grid(column=0, row=4)
        vin = tk.StringVar()
        vin_set = ttk.Combobox(win, width=10, textvariable=vin)
        vin_set['values'] = (2.5, 3.0, 3.5, 3.7, 4.0, 4.5, 5.0, 5.5)
        vin_set.grid(column=1, row=4)
        vin_set.current(3)
        vin_set.bind("<<ComboboxSelected>>", set_vin)

        # Output Current Setting
        def set_iout(*args):
            print(iout_set.get())
        tk.Label(win, text="LOAD CURRENT[A]").grid(column=0, row=5)
        iout = tk.StringVar()
        iout_set = ttk.Combobox(win, width=10, textvariable=iout)
        iout_set['values'] = (0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0)
        iout_set.grid(column=1, row=5)
        iout_set.current(0)
        iout_set.bind("<<ComboboxSelected>>", set_iout)

        # Trigger choose and type setting
        def set_trigger(*args):
            print(numberChosen.get())
        tk.Label(win, text="CH Num of Trigger").grid(column=0, row=6)
        number = tk.StringVar()
        numberChosen = ttk.Combobox(win, width=10, textvariable=number)
        numberChosen['values'] = ('CH1','CH2', 'CH3', 'CH4')
        numberChosen.grid(column=1, row=6)
        numberChosen.current(3)
        numberChosen.bind("<<ComboboxSelected>>", set_trigger)

        def trigger_type(*args):
            print(riseorfallChosen.get())
        riseorfall = tk.StringVar()
        riseorfallChosen = ttk.Combobox(win, width=10, textvariable=riseorfall)
        riseorfallChosen['values'] = ('Rise','Fall')
        riseorfallChosen.grid(column=2, row=6)
        riseorfallChosen.current(1)
        riseorfallChosen.bind("<<ComboboxSelected>>", trigger_type)

        def screencapture():
            image_name = "temp.png"
            scope.get_screen_shot(image_name)
            print('OK')
        # Screen Capture button
        action = Button(win, text="Screen Capture", command = screencapture)
        action.grid(column=1, row=10)

        def select_path():
            path = askdirectory()
            savepath.insert(INSERT, path)
            print(path)
        select = Button(win, text="Select...", command=select_path)
        select.grid(column=2, row=10)

        savepath = tk.Entry(width =10)
        savepath.grid(column=1, row=12)

        tk.mainloop()


if __name__ == '__main__':
    meas = ScreenCapture()
    try:
#        meas.ps_setup(4.0, 2.0)
#        meas.iout_setup(2, sw_on = 0)
        meas.gui_setup()
    finally:
        pass

(0 ) (0 )
回复 举报

楼主 | 回复于 2018-04-25 沙发

对于之前的程序进行了完善,并且验证了程序的可行性。与示波器以及电源负载的通信,可根据自己的情况在此基础上进行修改。
(0 )
评论 (0) 举报

楼主 | 回复于 2018-04-25 2#

输出结果如下图

(0 )
评论 (0) 举报

楼主 | 回复于 2018-04-25 3#

希望对各位有所帮助
(0 )
评论 (0) 举报

回复于 2018-04-26 4#

感谢分享
(0 )
评论 (0) 举报

回复于 2018-04-26 5#

高端的,谢谢分享!!!
(0 )
评论 (0) 举报

楼主 | 回复于 2018-04-27 6#

无人问津
(0 )
评论 (0) 举报

回复于 2018-04-27 7#

赞赞赞,赞一个。
(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部