1

我对代码有所了解,但我不明白为什么规模如此迟钝/缓慢。

from tkinter import *

#main menu
def mmWindow():
    mmWindow=Tk()
    mmWindow.geometry('600x600')

#Page 1
def page1():
    master.title('Page 1')
    # set up a boolean for each page, when page click turn one boolean true and the rest false
    #look at frames, canvas looks like the main option
    #draw sliders 1-6
    Scale(master, from_=0, to=100).place(x=200, y=120)

#Page 2
def page2():
    master.title('Page 2')
    #draw sliders 7-12
    Scale(master, from_=0, to=100).place(x=300, y=120)
#Page 3
def page3():
    master.title('Page 3')
    #draw slider 13-18

#Page 4
def page4():
    master.title('Page 4')
    #draw sldiers 19-24

#Presets
def presets():
    master.title('Presets')

#settings
def settings():
    master.title('Settings')


#first window   
master= Tk()
master.geometry('1440x900+0+0')    
master.title('DMX512 Controller')

#buttons
bw=250
bh=110
img1 = PhotoImage(file="/Users/Josh/Documents/Uni/Year3/Diss/Images/Gif/mainmenu.gif")
img2 = PhotoImage(file="/Users/Josh/Documents/Uni/Year3/Diss/Images/Gif/p1.gif")
img3 = PhotoImage(file="/Users/Josh/Documents/Uni/Year3/Diss/Images/Gif/p2.gif")
img4 = PhotoImage(file="/Users/Josh/Documents/Uni/Year3/Diss/Images/Gif/p3.gif")
img5 = PhotoImage(file="/Users/Josh/Documents/Uni/Year3/Diss/Images/Gif/p4.gif")
img6 = PhotoImage(file="/Users/Josh/Documents/Uni/Year3/Diss/Images/Gif/presets.gif")
img7 = PhotoImage(file="/Users/Josh/Documents/Uni/Year3/Diss/Images/Gif/settings.gif")

Button(master, image=img1, command =mmWindow, width=bw, height=bh).place(x=1190,y=0)
Button(master, image=img2,command =page1).place(x=1190,y=120)
Button(master, image=img3, command =page2).place(x=1190,y=240)
Button(master, image=img4,command =page3).place(x=1190,y=360)
Button(master, image=img5, command =page4).place(x=1190,y=480)
Button(master, image=img6,command =presets).place(x=1190,y=600)
Button(master, image=img7,command =settings).place(x=1190,y=720)


#text
wtitle = Label (master, text = "Pi DMX", fg = 'blue')
wtitle.place(x = 640, y = 100)

master.mainloop()

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

4

2 回答 2

1

我遇到了同样的问题,并创建了一个(相当丑陋的)解决方法,该解决方法在回调函数周围创建了一个包装器,因此每次调用回调函数时都会调用放置 Scale 的 Frame 的 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()
于 2014-03-26T10:39:23.660 回答
-1

如果要更改窗口的大小,请使用 .geometry

master.geometry('400x400')
于 2013-12-17T23:38:20.453 回答