在画布中以Tkin显示比例值

2024-09-27 00:13:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用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 import*

^{pr2}$

我在这里要做的是程序应该将滑块的当前值显示为画布内的文本。初始值显示在画布上,但我需要一个方法来更新滑块移动时的值。在


Tags: 代码fromimportmaintkinter画布guitk
1条回答
网友
1楼 · 发布于 2024-09-27 00:13:37

让我详细谈谈我的评论。这就是我的意思(使用类和一个简化的示例来满足我的目的):

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()

编辑:从对updateCanvas的调用中删除lambda,因为Scale小部件的command在调用时会传递它的值。我可以给updateCanvas一个自动传递的参数sliderVal,然后用它来更新文本。还删除了对update()的调用,因为这是不必要的。在

编辑2:更新代码以反映fhdrsdg的建议,这允许在每次调用update函数时无需销毁和重新创建文本即可更新文本。在

相关问题 更多 >

    热门问题