本文整理汇总了Python中tkinter.Scale.grid方法的典型用法代码示例。如果您正苦于以下问题:Python Scale.grid方法的具体用法?Python Scale.grid怎么用?Python Scale.grid使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tkinter.Scale
的用法示例。
在下文中一共展示了Scale.grid方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: create_monitor
# 需要导入模块: from tkinter import Scale [as 别名]
# 或者: from tkinter.Scale import grid [as 别名]
def create_monitor(self):
self.monitor_frame = LabelFrame(self, text="Monitor and Transport")
this_cycle = Scale(self.monitor_frame, label='cycle_pos', orient=HORIZONTAL,
from_=1, to=16, resolution=1)
this_cycle.disable, this_cycle.enable = (None, None)
this_cycle.ref = 'cycle_pos'
this_cycle.grid(column=0, row=0, sticky=E + W)
self.updateButton = Button(self.monitor_frame,
text='Reload all Settings',
command=self.request_update)
self.updateButton.grid(row=1, sticky=E + W)
self.ForceCaesuraButton = Button(self.monitor_frame,
text='Force Caesura',
command=self.force_caesura)
self.ForceCaesuraButton.grid(row=2, sticky=E + W)
self.saveBehaviourButton = Button(self.monitor_frame,
text='Save current behaviour',
command=self.request_saving_behaviour)
self.saveBehaviourButton.grid(row=3, sticky=E + W)
self.saveBehaviourNameEntry = Entry(self.monitor_frame)
self.saveBehaviourNameEntry.grid(row=4, sticky=E + W)
self.saveBehaviourNameEntry.bind('<KeyRelease>', self.request_saving_behaviour)
self.selected_behaviour = StringVar()
self.selected_behaviour.trace('w', self.new_behaviour_chosen)
self.savedBehavioursMenu = OptionMenu(self.monitor_frame,
self.selected_behaviour, None,)
self.savedBehavioursMenu.grid(row=5, sticky=E + W)
self.monitor_frame.grid(column=0, row=10, sticky=E + W)
示例2: Tx
# 需要导入模块: from tkinter import Scale [as 别名]
# 或者: from tkinter.Scale import grid [as 别名]
class Tx(Tk.Frame):
def __init__(self, master=None):
Tk.Frame.__init__(self, master)
self.tx_frame = Tk.Frame(self)
self.gpio = []
for i in range(0,20):
self.gpio.append(GPIO(i))
# GPIO LABEL
self.gpio_hdr = Tk.Label(self.tx_frame,text="PORT%02d"%i, anchor=Tk.W)
# GPIO Configure
self.c_gpio_config = ttk.Combobox(self.tx_frame,value=["INPUT","OUTPUT","HIZ"], state="readonly")
self.c_gpio_config.current(HIZ)
self.c_gpio_config.bind("<<ComboboxSelected>>",self.gpio[i].config_change)
self.gpio[i].set_combo(self.c_gpio_config)
# GPIO scaler
self.s_gpio_value = Scale(self.tx_frame,orient = 'h',showvalue = 0,from_ = 0, to = 1,command = self.gpio[i].value_change)
self.gpio[i].set_scale(self.s_gpio_value)
self.gpio_hdr.grid(row=i, column=0, padx=5, pady=0)
self.c_gpio_config.grid(row=i, column=1, padx=5, pady=0)
self.s_gpio_value.grid(row=i, column=2, padx=5, pady=0)
self.tx_frame.pack()
示例3: Visual
# 需要导入模块: from tkinter import Scale [as 别名]
# 或者: from tkinter.Scale import grid [as 别名]
class Visual(Frame):
'''Class that takes a world as argument and present it graphically
on a tkinter canvas.'''
def __init__(self):
'''
Sets up a simulation GUI in tkinter.
'''
Frame.__init__(self)
self.master.title("The Schelling Segregation Model in Python")
self.master.wm_resizable(0, 0)
self.grid()
self.movement_possible = True
# --------------------------------------- #
# --------- FRAMES FOR GUI -------------- #
# --------------------------------------- #
# The pane for user values
self._entryPane = Frame(self,
borderwidth=5,
relief='sunken')
self._entryPane.grid(row=0, column=0, sticky='n')
# The buttons pane
self._buttonPane = Frame(self, borderwidth=5)
self._buttonPane.grid(row=1, column=0, sticky='n')
# A temp pane where graph is located, just for cosmetic reasons
width, height = 425, 350
self._graph = Canvas(self,
width=width,
height=height,
background="black")
self._graph.configure(relief='sunken', border=2)
self._graph.grid(row=3, column=0)
# The pane where the canvas is located
self._animationPane = Frame(self,
borderwidth=5,
relief='sunken')
self._animationPane.grid(row=0, column=1,
rowspan=4, pady=10,
sticky="n")
# --------------------------------------- #
# --------- FILLING THE FRAMES ---------- #
# --------------------------------------- #
self._canvas() # Create graphics canvas
self._entry() # Create entry widgets
self._buttons() # Create button widgets
def _plot_setup(self, time):
'''Method for crudely annotating the graph window.'''
time = time
# Main plot
width, height = 425, 350
y0 = -time/10
self._graph = Canvas(self, width=width,
height=height,
background="black",
borderwidth=5)
self._graph.grid(row=3, column=0)
self.trans = Plotcoords(width, height, y0, -0.2, time, 1.3)
x, y = self.trans.screen(time // 2, 1.2)
x1, y1 = self.trans.screen(time // 2, 1.13)
self._graph.create_text(x, y,
text="% Happy",
fill="green",
font="bold 12")
self._graph.create_text(x1, y1,
text="% Unhappy",
fill="red",
font="bold 12")
# Line x-axis
x, y = self.trans.screen((-5 * (time / 100)), -0.05)
x1, y = self.trans.screen(time, -0.05)
self._graph.create_line(x, y, x1, y, fill="white", width=1.5)
# Text x-axis
x_text, y_text = self.trans.screen(time / 2, -0.15)
self._graph.create_text(x_text, y_text,
text="Time",
fill="white",
font="bold 12")
# Line y-axis
x, y = self.trans.screen((-0.5 * (time / 100)), -0.05)
x, y1 = self.trans.screen((-5 * (time / 100)), 1)
self._graph.create_line(x, y, x, y1, fill="white", width=1.5)
def _entry(self):
'''Method for creating widgets for collecting user input.'''
# N (no of turtles)
#.........这里部分代码省略.........
示例4: ScytheConfigEditor
# 需要导入模块: from tkinter import Scale [as 别名]
# 或者: from tkinter.Scale import grid [as 别名]
class ScytheConfigEditor():
def __init__(self):
global CURRENTCONFIG
global MAXCONFIG
global CF_MODE
self.confighandler = ConfigHandler()
self.confighandler.backupConf()
tmpconfig= configparser.ConfigParser()
self.confighandler.backupConfTo(tmpconfig)
top = tk.Toplevel()
top.title("Set configuration")
nb = ttk.Notebook(top)
b_config_ok = tk.Button(top, text="OK", command=top.destroy)
b_config_ok.bind('<ButtonRelease-1>',self.onSetConfigOK)
b_config_apply = tk.Button(top, text="Apply", command=self.onSetConfigApply)
b_config_cancel = tk.Button(top, text="Cancel", command=top.destroy)
b_config_cancel.bind('<ButtonRelease-1>',self.onSetConfigCancel())
fr_paths = tk.Frame(nb,width=200, height=100)
fr_penalties = tk.Frame(nb,width=200, height=100)
fr_mode = ttk.Frame(nb,width=200, height=100)
fr_cleanup = ttk.Frame(nb,width=200, height=100)
fr_run = ttk.Frame(nb,width=200, height=100)
fr_algorithm = ttk.Frame(nb,width=200, height=100)
fr_fastaheader = ttk.Frame(nb,width=200, height=100)
#######labels########################
self.txt_sec=[]
self.txt_subsec={}
for section in MAXCONFIG.sections():
#print( "["+section +"]\n")
self.txt_sec.append(section)
for opt in MAXCONFIG.options(section):
try:
self.txt_subsec[section].append(opt)
except KeyError as e:
self.txt_subsec[section]=[opt]
lab_sec=[]
lab_subsec={}
dd_subsec={}
self.var_subsec={}
for t in self.txt_sec:
lab_sec.append(tk.Label(fr_paths,text = t))
for t in self.txt_subsec:
#print(t,self.txt_subsec[t])
for u in self.txt_subsec[t]:
if t == CF_MODE:
fr = fr_mode
elif t == CF_PATHS:
fr = fr_paths
elif t == CF_CLEANUP:
fr = fr_cleanup
elif t == CF_RUN:
fr = fr_run
elif t == CF_PENALTIES:
fr = fr_penalties
elif t == CF_ALGORITHM:
fr = fr_algorithm
elif t == CF_FASTAHEADER:
fr = fr_fastaheader
#print("fastaheader_fr")
################################
else:
sys.stderr.write("No such section:",t)
try:
lab_subsec[t].append(tk.Label(fr,text = u))
self.var_subsec[t].append(tk.StringVar(fr))
if u in OPTIONS:
dd_subsec[t].append(OptionMenu(fr,self.var_subsec[t][-1],*OPTIONS[u]))
else:
dd_subsec[t].append("")
except KeyError as e:
try:
lab_subsec[t]=[tk.Label(fr,text = u)]
self.var_subsec[t]=[tk.StringVar(fr)]
if u in OPTIONS:
dd_subsec[t] = [OptionMenu(fr,self.var_subsec[t][-1],*OPTIONS[u])]
else:
dd_subsec[t] = [""]
except KeyError as e:
sys.stderr.write(str(e))
dd_subsec[t].append("")
for t in lab_subsec:
r=0
c=0
for i in lab_subsec[t]:
#print(i.cget("text"))
i.grid(row=r,column=c, sticky=tk.E)
r+=1
#print(r,i.cget("text"))
for t in dd_subsec:
c=1
r=0
for i in dd_subsec[t]:
#print(i)
if i is not "":
#.........这里部分代码省略.........
示例5: Fenetre
# 需要导入模块: from tkinter import Scale [as 别名]
# 或者: from tkinter.Scale import grid [as 别名]
class Fenetre(Tk):
def __init__(self):
Tk.__init__(self)
self.tilt_val_init = 110
self.pan_val_init = 75
self.pan_min = 0
self.pan_max = 105
self.tilt_min = 35
self.tilt_max = 135
self.pas = 5
# Full Screen
largeur, hauteur = self.winfo_screenwidth(), self.winfo_screenheight()
self.overrideredirect(0)
self.geometry("%dx%d" % (largeur, hauteur))
# TILT
self.tilt_bar = Scale(self, from_=self.tilt_min, to=self.tilt_max, length=250, label='Tilt', sliderlength=20,
orient=HORIZONTAL,
command=self.update_tilt)
self.tilt_bar.set((self.tilt_max + self.tilt_min) // 2)
self.tilt_bar.grid(row=1, column=2)
self.tilt_angle = StringVar()
self.tilt_val = self.tilt_bar.get()
# PAN
self.pan_bar = Scale(self, from_=self.pan_min, to=self.pan_max, length=250, label='Pan', sliderlength=20,
orient=HORIZONTAL,
command=self.update_pan)
self.pan_bar.set((self.pan_max + self.pan_min) // 2)
self.pan_bar.grid(row=2, column=2)
self.pan_angle = StringVar()
self.pan_val = self.pan_bar.get()
# PS3 Controller
self.bind("<a>", self.pan_plus)
self.bind("<d>", self.pan_moins)
self.bind("<s>", self.tilt_plus)
self.bind("<w>", self.tilt_moins)
self.bind("<p>", self.lean_left)
self.bind("<m>", self.lean_right)
self.bind("<q>", self.initialiser_positon)
self.bind("<j>", self.forward)
self.bind("<u>", self.reverse)
self.bind("<h>", self.left)
self.bind("<k>", self.right)
self.bind("<i>", self.break_motor)
self.bind("<Button-2>", self.alarm)
self.bind("<Button-3>", self.beep)
# Motor
self.gear = 0
self.speed_init = 5
self.speed = self.speed_init
self.leds = [led_1, led_2, led_3]
self.bind("<e>", self.shift_down)
self.bind("<r>", self.shift_up)
self.pwm = gpio.PWM(enable_pin, 50) # 50 is the frequency
# Infos
self.pas_label = Label(self, text=str(self.pas))
self.pas_label.grid(row=3)
self.buzzer_state = 0
#--------Buzzer--------
def beep(self, event, time=100):
self.buzzer_on()
self.after(time, self.buzzer_off)
def buzzer_on(self):
gpio.output(buzzer, gpio.HIGH)
self.buzzer_state = 1
def buzzer_off(self):
gpio.output(buzzer, gpio.LOW)
self.buzzer_state = 0
def alarm(self, event):
if self.buzzer_state == 0:
gpio.output(buzzer, gpio.HIGH)
self.buzzer_state = 1
else:
gpio.output(buzzer, gpio.LOW)
self.buzzer_state = 0
#-------Camera-------
#-------Motor-------
def shift_up(self, event):
if self.gear != 3:
self.gear += 1
gpio.output(self.leds[self.gear - 1], gpio.HIGH)
else:
self.beep(event, time=70)
if self.gear == 0:
self.speed = self.speed_init
#.........这里部分代码省略.........
示例6: Application
# 需要导入模块: from tkinter import Scale [as 别名]
# 或者: from tkinter.Scale import grid [as 别名]
#.........这里部分代码省略.........
self.menubar.add_command(label="Load", command= self.load)
self.menubar.add_command(label="Help", command= self.help)
root.config(menu= self.menubar)
def makeInputFrame(self):
self.inp_seed = String()
self.bgColor = String()
self.gen_value = Int()
self.rainbowCheck = Int()
self.fram_input = Frame(self, bd= 2, relief= self.style, width= input_frame_width, height= input_frame_height)
self.fram_seed = Frame(self.fram_input, bd= 1, relief= self.style)
self.fram_prod = Frame(self.fram_input, bd= 1, relief= self.style)
self.fram_draw = Frame(self.fram_input, bd= 1, relief= self.style)
self.fram_drawParams = Frame(self.fram_input, bd= 1, relief= self.style)
self.fram_gen = Frame(self.fram_input, bd= 1, relief= self.style)
self.fram_output = Frame(self.fram_input, bd= 1, relief= self.style)
self.menu_gen = DropDown(self.fram_gen, textvariable= self.gen_value, state= 'readonly')
self.entr_seed = Input(self.fram_seed, textvariable= self.inp_seed)
self.text_output = Output(self.fram_output, width= 35, height= 10)
self.scrl_output = Scrollbar(self.fram_output)
self.list_prod = List(self.fram_prod, selectmode= BROWSE, font= "Courier 8", height= 5)
self.list_draw = List(self.fram_draw, selectmode= BROWSE, font= "Courier 8", height= 5)
self.slid_linesize = Slider(self.fram_drawParams, from_= 0.1, to= 10.0, orient= HORIZONTAL, resolution= 0.1, length= 180)
self.slid_timer = Slider(self.fram_drawParams, from_= 0, to= 2, orient= HORIZONTAL, resolution= 0.02, length= 180)
self.slid_angle = Slider(self.fram_drawParams, from_= 0, to= 359, orient= HORIZONTAL, length= 180)
self.entr_bgcolor = Input (self.fram_drawParams, textvariable= self.bgColor)
self.butt_prodAdd = Button(self.fram_prod, text= "Add", width=8, command= self.AddProductionRule)
self.butt_prodEdit = Button(self.fram_prod, text= "Edit", width=8, command= self.EditProductionRule)
self.butt_prodDelete = Button(self.fram_prod, text= "Delete", width=8, command= self.DeleteProductionRule)
self.butt_drawAdd = Button(self.fram_draw, text= "Add", width=8, command= self.AddDrawingRule)
self.butt_drawEdit = Button(self.fram_draw, text= "Edit", width=8, command= self.EditDrawingRule)
self.butt_drawDelete = Button(self.fram_draw, text= "Delete", width=8, command= self.DeleteDrawingRule)
self.chek_incColor = CheckBox(self.fram_draw, text= "Rainbow", variable= self.rainbowCheck)
Label(self.fram_seed, text= "Axiom:", width=8).grid (row=0, column=0)
Label(self.fram_prod, text= "Production\nRules:", width=8).grid (row=0, column=0)
Label(self.fram_draw, text= "Drawing\nRules:", width=8).grid (row=0, column=0)
Label(self.fram_drawParams, text= "Line Size:").grid (row=0, column=0)
Label(self.fram_drawParams, text= "Delay (ms):").grid (row=1, column=0)
Label(self.fram_drawParams, text= "Starting Angle:").grid (row=2, column=0)
Label(self.fram_drawParams, text= "Background Color:").grid (row=3, column=0)
Label(self.fram_output, text= "Output:").grid (row=0, column=0)
Label(self.fram_gen, text= "Generations:").grid (row=0, column=0)
self.gen_value.set(1)
self.menu_gen['values'] = tuple(range(1, 13))
self.slid_linesize.set(1.0)
self.bgColor.set( Color.default() )
self.text_output.config(state='disabled', yscrollcommand= self.scrl_output.set)
self.scrl_output.config(command=self.text_output.yview)
self.fram_input.grid (row=0, column=0)
self.fram_seed.grid (row=1, column=0, sticky= 'ew')
self.fram_prod.grid (row=2, column=0, sticky= 'ew')
self.fram_draw.grid (row=3, column=0, sticky= 'ew')
self.fram_drawParams.grid (row=4, column=0, sticky= 'ew')
self.fram_gen.grid (row=5, column=0, sticky= 'ew')
self.fram_output.grid (row=6, column=0, sticky= 'ew')
self.entr_seed.grid (row=0, column=1, sticky= 'ew')
self.list_prod.grid (row=0, column=1, sticky= 'ew')
self.butt_prodAdd.grid (row=1, column=0, sticky= 'ew')
self.butt_prodEdit.grid (row=1, column=1, sticky= 'ew')
self.butt_prodDelete.grid (row=1, column=2, sticky= 'ew')
self.list_draw.grid (row=0, column=1)
self.butt_drawAdd.grid (row=1, column=0, sticky= 'ew')
self.butt_drawEdit.grid (row=1, column=1, sticky= 'ew')
self.butt_drawDelete.grid (row=1, column=2, sticky= 'ew')
示例7: HsvGui
# 需要导入模块: from tkinter import Scale [as 别名]
# 或者: from tkinter.Scale import grid [as 别名]
class HsvGui(tk.Frame):
def __init__(self, master=None,):
tk.Frame.__init__(self, master)
self.root = master
self.Webcam = G2.Webcamera()
self.baseImage = self.Webcam.save_image(persist=False)
self.baseImage = cv2.cvtColor(numpy.array(self.baseImage), cv2.COLOR_RGB2BGR)
self.createWidgets()
self.OnValueChange = event.Event()
self.title = "Webcam"
cv2.startWindowThread()
cv2.namedWindow(self.title, cv2.WINDOW_NORMAL)
cv2.imshow(self.title, self.baseImage)
self.Funkify()
def createWidgets(self):
Label(self.root, text="Value:").grid(row=0, sticky=W)
Label(self.root, text="H:").grid(row=1, sticky=W)
Label(self.root, text="S:").grid(row=2, sticky=W)
Label(self.root, text="V:").grid(row=3, sticky=W)
Label(self.root, text="S:").grid(row=4, sticky=W)
Label(self.root, text="V:").grid(row=5, sticky=W)
Label(self.root, text="H:").grid(row=6, sticky=W)
self.valueLabel = Label(self.root, text="000-000-000 to 000-000-000")
self.valueLabel.grid(row=0, column=1, sticky=W)
self.Hvalue = Scale(self.root, from_=0, to=255, orient=HORIZONTAL, command=self.__sliderCallback)
self.Hvalue.grid(row=1, column=1)
self.Hvalue.set(0)
self.Svalue = Scale(self.root, from_=0, to=255, orient=HORIZONTAL, command=self.__sliderCallback)
self.Svalue.grid( row=2, column=1)
self.Svalue.set(90)
self.Vvalue = Scale(self.root, from_=0, to=255, orient=HORIZONTAL, command=self.__sliderCallback)
self.Vvalue.grid( row=3, column=1)
self.Vvalue.set(0)
self.HvalueMax = Scale(self.root, from_=0, to=255, orient=HORIZONTAL, command=self.__sliderCallback)
self.HvalueMax.grid(row=4, column=1)
self.HvalueMax.set(255)
self.SvalueMax = Scale(self.root, from_=0, to=255, orient=HORIZONTAL, command=self.__sliderCallback)
self.SvalueMax.grid(row=5, column=1)
self.SvalueMax.set(255)
self.VvalueMax = Scale(self.root, from_=0, to=255, orient=HORIZONTAL, command=self.__sliderCallback)
self.VvalueMax.grid(row=6, column=1)
self.VvalueMax.set(120)
self.Go = tk.Button(self.root, text="Go!", fg="Green", command=self.Funkify)
self.Go.grid(row=7, column=0)
self.QUIT = tk.Button(self.root, text="QUIT", fg="red", command=self.root.destroy)
self.QUIT.grid(row=7, column=1)
def Funkify(self):
H = int(self.Hvalue.get())
S = int(self.Svalue.get())
V = int(self.Vvalue.get())
lower = [H, S, V]
Hmax = int(self.HvalueMax.get())
Smax = int(self.SvalueMax.get())
Vmax = int(self.VvalueMax.get())
upper= [Hmax, Smax, Vmax]
#self.valueLabel['text'] = '{0}-{1}-{2} to {3}-{4}-{5}'.format(H, S, V, Hmax, Smax, Vmax)
output, a = self.Webcam.funkyfy(colorrange=(lower, upper))
cv2.imshow(self.title, numpy.hstack([output, a]))
def __sliderCallback(self, args):
print('Sliding!!')
示例8: Application
# 需要导入模块: from tkinter import Scale [as 别名]
# 或者: from tkinter.Scale import grid [as 别名]
class Application(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.send_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.sock.bind((host, port))
self.grid()
self.columnconfigure(0, minsize=100)
self.columnconfigure(1, minsize=200)
self.columnconfigure(2, minsize=200)
self.columnconfigure(3, minsize=150)
self.columnconfigure(4, minsize=150)
self.columnconfigure(5, minsize=150)
self.columnconfigure(6, minsize=150)
self.create_widgets()
self.settables = self.assemble_settables()
self.gui_logger = logging.getLogger('gui')
self.request_update()
def create_widgets(self):
self.create_monitor()
self.create_check_buttons()
self.create_ranges()
self.create_scales()
self.create_radio_buttons()
self.create_voices()
self.quitButton = Button(self, text='Quit', command=self.quit)
self.quitButton.grid(columnspan=7, sticky=E + W)
def assemble_settables(self):
settables = self.winfo_children()
for w in settables:
settables += w.winfo_children()
return [w for w in settables if w.__class__.__name__ in ['Scale', 'Checkbutton']]
def create_radio_buttons(self):
# Scale related
entries = ['DIATONIC', 'HARMONIC', 'MELODIC', 'PENTATONIC', 'PENTA_MINOR',
'GREEK_CHROMATIC', 'GREEK_ENHARMONIC']
self.scale = StringVar()
self.scale.set('DIATONIC')
self.rb_frame = Frame(self)
for e in entries:
rb = Radiobutton(self.rb_frame, value=e, text=e, anchor=W,
command=self.send_scale, variable=self.scale)
rb.grid(row=len(self.rb_frame.winfo_children()), sticky=W)
self.rb_frame.grid(column=1, row=len(self.grid_slaves(column=1)), rowspan=3)
def create_monitor(self):
self.monitor_frame = LabelFrame(self, text="Monitor and Transport")
this_cycle = Scale(self.monitor_frame, label='cycle_pos', orient=HORIZONTAL,
from_=1, to=16, resolution=1)
this_cycle.disable, this_cycle.enable = (None, None)
this_cycle.ref = 'cycle_pos'
this_cycle.grid(column=0, row=0, sticky=E + W)
self.updateButton = Button(self.monitor_frame,
text='Reload all Settings',
command=self.request_update)
self.updateButton.grid(row=1, sticky=E + W)
self.ForceCaesuraButton = Button(self.monitor_frame,
text='Force Caesura',
command=self.force_caesura)
self.ForceCaesuraButton.grid(row=2, sticky=E + W)
self.saveBehaviourButton = Button(self.monitor_frame,
text='Save current behaviour',
command=self.request_saving_behaviour)
self.saveBehaviourButton.grid(row=3, sticky=E + W)
self.saveBehaviourNameEntry = Entry(self.monitor_frame)
self.saveBehaviourNameEntry.grid(row=4, sticky=E + W)
self.saveBehaviourNameEntry.bind('<KeyRelease>', self.request_saving_behaviour)
self.selected_behaviour = StringVar()
self.selected_behaviour.trace('w', self.new_behaviour_chosen)
self.savedBehavioursMenu = OptionMenu(self.monitor_frame,
self.selected_behaviour, None,)
self.savedBehavioursMenu.grid(row=5, sticky=E + W)
self.monitor_frame.grid(column=0, row=10, sticky=E + W)
def request_update(self):
self.send({'sys': 'update'})
def request_saving_behaviour(self, event=None):
"""callback for save behaviour button and textentry"""
if event and event.widget == self.saveBehaviourNameEntry:
if event.keysym == 'Return':
name = self.saveBehaviourNameEntry.get()
self.saveBehaviourNameEntry.delete(0, len(name))
else:
return
else: # button was pressed
name = self.saveBehaviourNameEntry.get()
if name:
self.send({'sys': ['save_behaviour', name]})
def force_caesura(self):
self.send({'force_caesura': True})
def create_voices(self):
voice_ids = ['1', '2', '3', '4']
SCALES = OrderedDict([
('pan_pos', {'min': -1, 'max': 1, 'start': 0.5, 'res': 0.001}),
#.........这里部分代码省略.........
示例9: create_voices
# 需要导入模块: from tkinter import Scale [as 别名]
# 或者: from tkinter.Scale import grid [as 别名]
def create_voices(self):
voice_ids = ['1', '2', '3', '4']
SCALES = OrderedDict([
('pan_pos', {'min': -1, 'max': 1, 'start': 0.5, 'res': 0.001}),
('volume', {'min': 0, 'max': 1, 'start': 0.666, 'res': 0.001}),
('slide_duration_msecs', {'min': 0, 'max': 2000, 'start': 60, 'res': 1}),
('slide_duration_prop', {'min': 0, 'max': 2, 'start': 0.666, 'res': 0.001}),
('binaural_diff', {'min': 0, 'max': 66, 'start': 0.2, 'res': 0.01})
])
for vid in voice_ids:
counter = 0
for sca in SCALES:
name = 'voice_' + vid + '_' + sca
setattr(self, 'min_' + name, SCALES[sca]['min'])
setattr(self, 'max_' + name, SCALES[sca]['max'])
this_sca = Scale(self, label=sca, orient=HORIZONTAL,
from_=getattr(self, 'min_' + name),
to=getattr(self, 'max_' + name),
resolution=SCALES[sca]['res'])
this_sca.enable = ('enable' in list(SCALES[sca].keys()) and
SCALES[sca]['enable'] or None)
this_sca.disable = ('disable' in list(SCALES[sca].keys()) and
SCALES[sca]['disable'] or None)
this_sca.grid(column=int(2 + int(vid)), row=counter, sticky=E + W)
this_sca.bind("<ButtonRelease>", self.scale_handler)
this_sca.ref = name
counter += 1
CHECK_BUTTONS = OrderedDict(
[('mute', False),
('automate_binaural_diffs', True),
('automate_note_duration_prop', True),
('use_proportional_slide_duration', {'val': True, 'label': 'proportional slide'}),
('automate_pan', True),
('automate_wavetables', True)])
for vid in voice_ids:
counter = 0
cb_frame = LabelFrame(self, text="Voice {0} - Automation".format(vid))
setattr(self, 'voice_' + vid + '_cb_frame', cb_frame)
for cb in CHECK_BUTTONS:
options = CHECK_BUTTONS[cb]
name = 'voice_' + vid + '_' + cb
if isinstance(options, dict) and 'label' in list(options.keys()):
label = options['label']
else:
label = cb[9:] if cb[:9] == 'automate_' else cb
setattr(self, name, IntVar(
value=type(options) == dict and options['val'] or options))
self.this_cb = Checkbutton(cb_frame, text=label, variable=getattr(self, name))
self.this_cb.bind('<Button-1>', self.check_boxes_handler)
self.this_cb.disable = None
self.this_cb.grid(sticky=W, column=0, row=counter)
self.this_cb.ref = name
counter += 1
# add trigger wavetable-button
trigWavetableButton = Button(cb_frame, text='Next Wavetable')
trigWavetableButton.bind('<Button-1>', self.trigger_waveform_handler)
trigWavetableButton.ref = 'voice_' + vid + "_trigger_wavetable"
trigWavetableButton.grid(row=counter)
cb_frame.grid(column=int(vid) + 2, row=5, sticky=E + W + N, rowspan=8)
for vid in voice_ids:
generation_types = ["random", "random_harmonic", "harmonic"]
partial_pools = ["even", "odd", "all"]
prefix = 'voice_' + vid + '_'
types_name = prefix + 'wavetable_generation_type'
pools_name = prefix + 'partial_pool'
setattr(self, types_name, StringVar())
getattr(self, types_name).set("random")
setattr(self, pools_name, StringVar())
getattr(self, pools_name).set("all")
target_frame = getattr(self, 'voice_' + vid + '_cb_frame')
gen_typ_frame = LabelFrame(target_frame, text="type")
gen_typ_frame.grid(row=len(target_frame.winfo_children()), sticky=W)
for gen_t in generation_types:
gen_t_entry = Radiobutton(gen_typ_frame, value=gen_t, text=gen_t, anchor=W,
variable=getattr(self, types_name))
gen_t_entry.bind('<ButtonRelease-1>', self.wt_handler)
gen_t_entry.ref = types_name
gen_t_entry.grid(row=len(gen_typ_frame.winfo_children()), sticky=W)
pp_frame = LabelFrame(target_frame, text="harmonics")
for pp in partial_pools:
pp_entry = Radiobutton(pp_frame, value=pp, text=pp, anchor=W,
variable=getattr(self, pools_name))
pp_entry.bind('<ButtonRelease-1>', self.wt_handler)
pp_entry.ref = pools_name
pp_entry.grid(row=len(pp_frame.winfo_children()), sticky=E + W)
this_num_partials = Scale(pp_frame, label='number of harmonics', orient=HORIZONTAL,
from_=1, to=24, resolution=1)
this_num_partials.ref = prefix + 'num_partials'
this_num_partials.grid(column=0, row=len(pp_frame.winfo_children()), sticky=E + W)
this_num_partials.bind("<ButtonRelease>", self.scale_handler)
pp_frame.grid(row=len(target_frame.winfo_children()), sticky=E + W)
示例10: initui
# 需要导入模块: from tkinter import Scale [as 别名]
# 或者: from tkinter.Scale import grid [as 别名]
def initui(self):
self.parent.title("Light pollution map")
self.style = Style()
self.style.theme_use("alt")
self.grid(row=0, column=0)
padding = {'padx':'5', 'pady':'5'}
big_heading_font = ("Arial", 14, 'bold')
small_heading_font = ("Arial", 10, 'bold')
# Create frames.
# There are three frames for settings - preprocessing, convolve, and contour.
# Each also has an image frame underneath it.
# Layout is as follows:
#
# --------------------------------------------------------------------------
# | | | | |
# | | | | |
# | import_body | process_body | contour_body | export_body |
# | | | | |
# | | | | |
# --------------------------------------------------------------------------
# Settings frames
top = self.winfo_toplevel()
top.rowconfigure(0, weight=1)
top.columnconfigure(0, weight=1)
self.rowconfigure(0, weight=1)
self.columnconfigure(0, weight=1)
self.columnconfigure(1, weight=1)
self.columnconfigure(2, weight=1)
self.columnconfigure(3, weight=1)
import_body = Frame(self, relief=RAISED, borderwidth=1)
import_body.grid(row=0, column=0, sticky=N+S+E+W)
process_body = Frame(self, relief=RAISED, borderwidth=1)
process_body.grid(row=0, column=1, sticky=N+S+E+W)
contour_body = Frame(self, relief=RAISED, borderwidth=1)
contour_body.grid(row=0, column=2, sticky=N+S+E+W)
export_body = Frame(self, relief=RAISED, borderwidth=1)
export_body.grid(row=0, column=3, sticky=N+S+E+W)
# =============================================================================================================
#
# Contents of load_image_frame
#
# =============================================================================================================
# Heading
processing_frame_header = Label(import_body, text="Import", font=big_heading_font)
processing_frame_header.grid(row=0, column=0, sticky=N, **padding)
filename_variable = StringVar()
# Import image
import_canvas = Canvas(import_body, width=canvas_size, height=canvas_size, background='black')
import_canvas.grid(row=1, column=0, sticky=N, **padding)
# Load file method
def choosefile():
filename_variable.set(filedialog.askopenfilename(parent=import_body))
image = Image.open(filename_variable.get())
thumbnail = create_thumbnail(image, canvas_size)
import_canvas.create_image(0, 0, image=thumbnail, anchor=NW)
load_image_button = Button(import_body, text="Import image", command=choosefile)
load_image_button.grid(row=2, column=0, columnspan=2, sticky=E+W+S, **padding)
import_body.rowconfigure(2, weight=1)
# =============================================================================================================
#
# Contents of processing_frame
#
# =============================================================================================================
processing_frame_header = Label(process_body, text="Process", font=big_heading_font)
processing_frame_header.grid(row=0, column=0, columnspan=2, sticky=N, **padding)
clipping_variable = IntVar()
constants_label = Label(process_body, text="Clipping",
font=("Arial", 10, 'bold'))
constants_label.grid(row=1, column=0, sticky=E, **padding)
clipping_label = Label(process_body, text="Remove pixels with \n brightness under")
clipping_label.grid(row=2, column=0, sticky=E, **padding)
clipping_entry = Entry(process_body, textvariable=clipping_variable, width=4)
clipping_entry.grid(row=2, column=1, sticky=W, **padding)
clipping_variable.set(value=default_clipping_value)
#.........这里部分代码省略.........