Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- # test button & radio button generation
- # test continuous plotting using tkinter timer
- import tkinter as Tk
- from math import pi, sin
- width=600; height=400
- phase=0
- root = Tk.Tk()
- upperframe = Tk.Frame(root)
- upperframe.pack()
- buttonbar = Tk.Frame(root)
- buttonbar.pack()
- radiobar = Tk.Frame(upperframe)
- radiobar.pack(side="left", anchor="n")
- graph = Tk.Canvas(upperframe, width=width, height=height + 2)
- graph.pack(side="left")
- abar = Tk.Frame(radiobar, bd=1, relief="raised")
- abar.pack(ipady=5, fill="both")
- fbar = Tk.Frame(radiobar, bd=1, relief="raised")
- fbar.pack(ipady=5, fill="both")
- def showgraph(*args):
- global act, phase
- amp = (avar.get() + 2) / 4.0
- freq = fvar.get() + 1
- act = args[0] if args else act
- if act == "Stop":
- return
- graph.delete("all")
- x = range(width)
- phase = (phase - 2) % width
- wav = [sin(2 * pi * (freq * n + phase) / width) for n in x]
- y = [(w * amp + 1) * height / 2 for w in wav]
- graph.create_line(list(zip(x,y)), width=2)
- if act == "Repeat":
- root.after(20,showgraph)
- butnames = ["Single", "Repeat", "Stop"]
- for bname in butnames:
- butcall = lambda act=bname: showgraph(act)
- Tk.Button(buttonbar, text=bname, command=butcall).pack(side="left")
- avar = Tk.IntVar(value=1)
- aname = ["low", "med", "high"]
- Tk.Label(abar, text="Amp").pack(pady=5)
- for n in range(len(aname)):
- Tk.Radiobutton(abar, variable=avar, value=n, text=aname[n]).pack(anchor="w")
- # If notification of change required, attach a "command=" callback
- fvar = Tk.IntVar(value=1)
- fname = ["low", "med", "high"]
- Tk.Label(fbar, text="Freq").pack(pady=5)
- for n in range(len(fname)):
- Tk.Radiobutton(fbar, variable=fvar, value=n, text=fname[n]).pack(anchor="w")
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment