Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Tkinter中显示画布中的比例值_Python_User Interface_Tkinter_Slider_Tkinter Canvas - Fatal编程技术网

Python 在Tkinter中显示画布中的比例值

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

我正在尝试在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 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()