python - Display value of scale in Canvas in Tkinter -
i trying develop gui in tkinter. have main code
from menus import * tkinter import * speedcontrol import * main = tk() main.tk_setpalette(background='white') generatemenus(main) generateslider(main) mainloop()
the code generateslider tkinter import *
def generateslider(master): display1 = canvas(master, width=150, height=80, relief=raised, bd=5) display1.grid(row=0,column=0) display1.create_rectangle(10, 10, 150, 80, fill='dark red') slider1 = scale(master, from_=0, to=100, length=400, tickinterval=10, orient=horizontal, relief=sunken, bd=5, bg='white', troughcolor='black', sliderrelief=raised) slider1.grid(row=0,column=1) display1.create_text(50,20, font='helvatica 28', text=slider1.get(), fill='white', anchor=nw) display2 = canvas(master, width=150, height=80, relief=raised, bd=5) display2.grid(row=1,column=0) display2.create_rectangle(10, 10, 150, 80, fill='dark red') slider2 = scale(master, from_=0, to=100, length=400, tickinterval=10, orient=horizontal, relief=sunken, bd=5, bg='white', troughcolor='black', sliderrelief=raised) slider2.grid(row=1,column=1) display2.create_text(50,20, font='helvatica 24', text=slider2.get(), fill='white', anchor=nw)
what trying here program should display current value of slider text inside canvas. initial value displayed in canvas need method update value when slider moves.
let me elaborate on comment. mean (using classes, , simplified example suit purpose):
from tkinter import * class window(): def __init__(self, master): self.display1 = canvas(master, width=150, height=80, relief=raised, bd=5) self.display1.grid(row=0,column=0) self.display1.create_rectangle(10, 10, 150, 80, fill='dark red') self.slider1 = scale(master, from_=0, to=100, length=400, tickinterval=10, orient=horizontal, relief=sunken, bd=5, bg='white', troughcolor='black', sliderrelief=raised, command = self.updatecanvas) self.slider1.grid(row=0,column=1) self.createdtext = self.display1.create_text(50, 20, font = 'helvatica 28', text = self.slider1.get(), fill = 'white', anchor = nw) def updatecanvas(self, sliderval): self.display1.itemconfig(self.createdtext, text = sliderval) master = tk() w = window(master) master.mainloop()
edit: removed lambda call updatecanvas
command
scale widgets passes it's value when called. able instead give updatecanvas
parameter sliderval automatically passed, , use update text. removed call update()
unnecessary.
edit 2: updated code reflect suggestion fhdrsdg, allows text updated without needing destroy & recreate every time update function called.
Comments
Post a Comment