Python 在Tkinter中显示画布中的比例值
我正在尝试在Tkinter中开发GUI。我有一个主代码Python 在Tkinter中显示画布中的比例值,python,user-interface,tkinter,slider,tkinter-canvas,Python,User Interface,Tkinter,Slider,Tkinter Canvas,我正在尝试在Tkinter中开发GUI。我有一个主代码 from menus import * from Tkinter import * from SpeedControl import * Main = Tk() Main.tk_setPalette(background='white') GenerateMenus(Main) GenerateSlider(Main) mainloop() GenerateSlider的代码是 从Tkinter进口* def GenerateSlide
from menus import *
from Tkinter import *
from SpeedControl import *
Main = Tk()
Main.tk_setPalette(background='white')
GenerateMenus(Main)
GenerateSlider(Main)
mainloop()
GenerateSlider的代码是
从Tkinter进口*
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)
我在这里试图做的是,程序应该在画布中以文本的形式显示滑块的当前值。初始值显示在画布中,但我需要一种方法在滑块移动时更新该值。让我详细说明我的评论。这就是我的意思(使用类和一个简化的示例来满足我的目的): Edit:从调用
updateCanvas
时删除lambda,因为Scale小部件的命令在调用时传递其值。我可以给updateCanvas
一个自动传递的参数sliderVal,然后我用它来更新文本。还删除了对update()
的调用,因为这是不必要的
编辑2:通过更新代码以反映建议,这样可以在每次调用更新函数时更新文本,而无需销毁和重新创建文本 您能否在缩放移动时创建回调函数(创建缩放小部件时,command=someFunction),以及回调调用display1.update()的内部?(或正在更新的显示)您可以在创建滑块后立即使用self.createdText=self.display1.create_text(50,20,font='Helvatica 28',text=self.slider1.get(),fill='white',anchor=NW)
创建文本,然后使用self.display1.itemconfig>更新中的文本(self.createdText,text=sliderVal)
。这样,您就不会在每次滑块更改时删除和创建画布的文本小部件,您只需更新显示的文本。将根据此建议进行更新。我根据我对其他小部件的工作知识创建了此示例,这是我第一次使用画布小部件!此代码有效。感谢您的帮助。这是actu这是我第一次创建Tkinter项目。
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()