Python 为什么tkinter Scale小部件的响应如此缓慢?

Python 为什么tkinter Scale小部件的响应如此缓慢?,python,tkinter,scale,tkinter-scale,Python,Tkinter,Scale,Tkinter Scale,我一直在思考代码,但我不明白为什么天平反应如此迟钝/缓慢 从tkinter导入* #主菜单 def mmWindow(): mmWindow=Tk() mmWindow.geometry('600x600') #第1页 def page1(): 主标题(“第1页”) #为每个页面设置一个布尔值,当页面单击时,将一个布尔值设置为true,其余为false #看看框架,画布看起来像是主选项 #绘制滑块1-6 刻度(主刻度,从0到100)。位置(x=200,y=120) #第2页 def page2(

我一直在思考代码,但我不明白为什么天平反应如此迟钝/缓慢

从tkinter导入*
#主菜单
def mmWindow():
mmWindow=Tk()
mmWindow.geometry('600x600')
#第1页
def page1():
主标题(“第1页”)
#为每个页面设置一个布尔值,当页面单击时,将一个布尔值设置为true,其余为false
#看看框架,画布看起来像是主选项
#绘制滑块1-6
刻度(主刻度,从0到100)。位置(x=200,y=120)
#第2页
def page2():
主标题(“第2页”)
#绘制滑块7-12
刻度(主刻度,从0到100)。位置(x=300,y=120)
#第3页
def page3():
主标题(“第3页”)
#绘制滑块13-18
#第4页
def page4():
主标题(“第4页”)
#以19比24抽签
#预设
def预设():
主标题(“预设”)
#背景
def设置():
master.title(“设置”)
#第一窗口
master=Tk()
主几何体('1440x900+0+0')
主标题(“DMX512控制器”)
#钮扣
体重=250
bh=110
img1=PhotoImage(文件=“/Users/Josh/Documents/Uni/Year3/Diss/Images/Gif/main menu.Gif”)
img2=PhotoImage(文件=“/Users/Josh/Documents/Uni/Year3/Diss/Images/Gif/p1.Gif”)
img3=PhotoImage(文件=“/Users/Josh/Documents/Uni/Year3/Diss/Images/Gif/p2.Gif”)
img4=PhotoImage(文件=“/Users/Josh/Documents/Uni/Year3/Diss/Images/Gif/p3.Gif”)
img5=PhotoImage(文件=“/Users/Josh/Documents/Uni/Year3/Diss/Images/Gif/p4.Gif”)
img6=PhotoImage(文件=“/Users/Josh/Documents/Uni/Year3/Diss/Images/Gif/presets.Gif”)
img7=PhotoImage(文件=“/Users/Josh/Documents/Uni/Year3/Diss/Images/Gif/settings.Gif”)
按钮(主控,图像=img1,命令=mmWindow,宽度=bw,高度=bh)。放置(x=1190,y=0)
按钮(主控,图像=img2,命令=page1)。位置(x=1190,y=120)
按钮(主控,图像=img3,命令=page2)。位置(x=1190,y=240)
按钮(主控,图像=img4,命令=page3)。放置(x=1190,y=360)
按钮(主控,图像=img5,命令=page4)。放置(x=1190,y=480)
按钮(主按钮,图像=img6,命令=预设)。放置(x=1190,y=600)
按钮(主,图像=img7,命令=settings)。放置(x=1190,y=720)
#正文
wtitle=标签(主控,text=“Pi DMX”,fg=‘蓝色’)
wtitle.位置(x=640,y=100)
master.mainloop()

(我知道,我也没有用最环保的方式编写代码。)

如果希望更改窗口大小,请使用。几何图形

master.geometry('400x400')

我也遇到了同样的问题,并创建了一个(相当难看的)解决方案,在回调函数周围创建了一个包装器,这样每次调用回调函数时都会调用放置刻度的框架的update()方法。如果不使用回调函数,可以将self.update方法直接传递给Scale初始值设定项的命令参数

这种方法是有效的,但感觉不满意,而且很粗糙

import tkinter as tk

class MainWindow(tk.Frame):

    def __init__(self, master=None, callback_funcs=None, max_rows=8):
        tk.Frame.__init__(self, master)
        self.grid()
        cb = lambda callback: lambda val: self.run_callback(callback, val) 
        self.callback_funcs = [cb(callback) for callback in callback_funcs]
        self.max_rows = max_rows
        self.create_scales()

    def run_callback(self, callback, val):
        self.update()
        callback(val)

    def create_scales(self):
        self.scales = []
        for callback in self.callback_funcs:
            scale = tk.Scale(from_=0, to=1, resolution=0.01, command=callback, orient=tk.HORIZONTAL)
            scale.grid()

我不想改变窗口的大小,当我在屏幕上运行代码并试图移动音量控制器时,它确实很滞后,大约每4秒更改一次,并跳转到值,而不是平稳运行……你确定正是这段代码导致了问题吗?当我运行你的代码时(因为我没有你所有的图像,所以进行了修改),按几个按钮让滑块出现,然后它们移动滑块,它们完全按照我的预期工作,没有任何减速。与你问的问题无关,我强烈建议你使用网格或包而不是位置。如果您关心GUI的正确调整大小、处理不同的字体以及使用不同的分辨率,那么Place就很难使用。几乎没有人使用place编写任何复杂的GUI。谢谢各位,我会查看guru并打包,我感觉这是我的机器,今晚我会尝试另一个谢谢