Python 单击“运行”按钮即可显示一系列界面

Python 单击“运行”按钮即可显示一系列界面,python,tkinter,Python,Tkinter,我已经写了一个程序,有大约40个界面,可以同时显示。代码如下: import Tkinter root = Tkinter.Tk( ) root.title("8 Puzzle Game") Tkinter.Label(root, text= '4', borderwidth=25 ).grid(row=1,column=1) Tkinter.Label(root, text= ' ', borderwidth=25 ).grid(row=1,column=2) Tkinter.Label

我已经写了一个程序,有大约40个界面,可以同时显示。代码如下:

import Tkinter

root = Tkinter.Tk(  )
root.title("8 Puzzle Game")

Tkinter.Label(root, text= '4', borderwidth=25 ).grid(row=1,column=1)
Tkinter.Label(root, text= ' ', borderwidth=25 ).grid(row=1,column=2)
Tkinter.Label(root, text= '3', borderwidth=25 ).grid(row=1,column=3)
Tkinter.Label(root, text= '2', borderwidth=25 ).grid(row=2,column=1)
Tkinter.Label(root, text= '8', borderwidth=25 ).grid(row=2,column=2)
Tkinter.Label(root, text= '5', borderwidth=25 ).grid(row=2,column=3)
Tkinter.Label(root, text= '7', borderwidth=25 ).grid(row=3,column=1)
Tkinter.Label(root, text= '6', borderwidth=25 ).grid(row=3,column=2)
Tkinter.Label(root, text= '1', borderwidth=25 ).grid(row=3,column=3)

def mainprg():

    Tkinter.Label(root, text= '4', borderwidth=25 ).grid(row=1,column=1)
    Tkinter.Label(root, text= '8', borderwidth=25 ).grid(row=1,column=2)
    Tkinter.Label(root, text= '3', borderwidth=25 ).grid(row=1,column=3)
    Tkinter.Label(root, text= '2', borderwidth=25 ).grid(row=2,column=1)
    Tkinter.Label(root, text= ' ', borderwidth=25 ).grid(row=2,column=2)
    Tkinter.Label(root, text= '5', borderwidth=25 ).grid(row=2,column=3)
    Tkinter.Label(root, text= '7', borderwidth=25 ).grid(row=3,column=1)
    Tkinter.Label(root, text= '6', borderwidth=25 ).grid(row=3,column=2)
    Tkinter.Label(root, text= '1', borderwidth=25 ).grid(row=3,column=3)

    B.configure(command = mainprg1)

B = Tkinter.Button(root, text = "Run", command = mainprg)
B.grid(row = 4, column = 1)



def mainprg1():
    Tkinter.Label(root, text= '4', borderwidth=25 ).grid(row=1,column=1)
    Tkinter.Label(root, text= '8', borderwidth=25 ).grid(row=1,column=2)
    Tkinter.Label(root, text= '3', borderwidth=25 ).grid(row=1,column=3)
    Tkinter.Label(root, text= '2', borderwidth=25 ).grid(row=2,column=1)
    Tkinter.Label(root, text= '5', borderwidth=25 ).grid(row=2,column=2)
    Tkinter.Label(root, text= ' ', borderwidth=25 ).grid(row=2,column=3)
    Tkinter.Label(root, text= '7', borderwidth=25 ).grid(row=3,column=1)
    Tkinter.Label(root, text= '6', borderwidth=25 ).grid(row=3,column=2)
    Tkinter.Label(root, text= '1', borderwidth=25 ).grid(row=3,column=3)

    B.configure(command = mainprg2)
def mainprg2():
    Tkinter.Label(root, text= '4', borderwidth=25 ).grid(row=1,column=1)
    Tkinter.Label(root, text= '8', borderwidth=25 ).grid(row=1,column=2)
    Tkinter.Label(root, text= '3', borderwidth=25 ).grid(row=1,column=3)
    Tkinter.Label(root, text= '2', borderwidth=25 ).grid(row=2,column=1)
    Tkinter.Label(root, text= '5', borderwidth=25 ).grid(row=2,column=2)
    Tkinter.Label(root, text= '1', borderwidth=25 ).grid(row=2,column=3)
    Tkinter.Label(root, text= '7', borderwidth=25 ).grid(row=3,column=1)
    Tkinter.Label(root, text= '6', borderwidth=25 ).grid(row=3,column=2)
    Tkinter.Label(root, text= ' ', borderwidth=25 ).grid(row=3,column=3)

    B.configure(command = mainprg3)
root.mainloop()

在这里,我每次都要按Run按钮来显示下一个界面。我应该怎么做才能同时显示它们呢?

如果您的意思是“按一下按钮,然后一行运行它们”,您可以通过替换

B.configure(command = mainprgX)

其中X必须由实际数字替换

这将在每个功能结束时触发一个1秒计时器以启动下一个计时器

因此,新的准则是:

import Tkinter

root = Tkinter.Tk(  )
root.title("8 Puzzle Game")

Tkinter.Label(root, text= '4', borderwidth=25 ).grid(row=1,column=1)
Tkinter.Label(root, text= ' ', borderwidth=25 ).grid(row=1,column=2)
Tkinter.Label(root, text= '3', borderwidth=25 ).grid(row=1,column=3)
Tkinter.Label(root, text= '2', borderwidth=25 ).grid(row=2,column=1)
Tkinter.Label(root, text= '8', borderwidth=25 ).grid(row=2,column=2)
Tkinter.Label(root, text= '5', borderwidth=25 ).grid(row=2,column=3)
Tkinter.Label(root, text= '7', borderwidth=25 ).grid(row=3,column=1)
Tkinter.Label(root, text= '6', borderwidth=25 ).grid(row=3,column=2)
Tkinter.Label(root, text= '1', borderwidth=25 ).grid(row=3,column=3)

def mainprg():

    Tkinter.Label(root, text= '4', borderwidth=25 ).grid(row=1,column=1)
    Tkinter.Label(root, text= '8', borderwidth=25 ).grid(row=1,column=2)
    Tkinter.Label(root, text= '3', borderwidth=25 ).grid(row=1,column=3)
    Tkinter.Label(root, text= '2', borderwidth=25 ).grid(row=2,column=1)
    Tkinter.Label(root, text= ' ', borderwidth=25 ).grid(row=2,column=2)
    Tkinter.Label(root, text= '5', borderwidth=25 ).grid(row=2,column=3)
    Tkinter.Label(root, text= '7', borderwidth=25 ).grid(row=3,column=1)
    Tkinter.Label(root, text= '6', borderwidth=25 ).grid(row=3,column=2)
    Tkinter.Label(root, text= '1', borderwidth=25 ).grid(row=3,column=3)

    root.after(1000, mainprg1)

B = Tkinter.Button(root, text = "Run", command = mainprg)
B.grid(row = 4, column = 1)



def mainprg1():
    Tkinter.Label(root, text= '4', borderwidth=25 ).grid(row=1,column=1)
    Tkinter.Label(root, text= '8', borderwidth=25 ).grid(row=1,column=2)
    Tkinter.Label(root, text= '3', borderwidth=25 ).grid(row=1,column=3)
    Tkinter.Label(root, text= '2', borderwidth=25 ).grid(row=2,column=1)
    Tkinter.Label(root, text= '5', borderwidth=25 ).grid(row=2,column=2)
    Tkinter.Label(root, text= ' ', borderwidth=25 ).grid(row=2,column=3)
    Tkinter.Label(root, text= '7', borderwidth=25 ).grid(row=3,column=1)
    Tkinter.Label(root, text= '6', borderwidth=25 ).grid(row=3,column=2)
    Tkinter.Label(root, text= '1', borderwidth=25 ).grid(row=3,column=3)

    root.after(1000, mainprg2)
def mainprg2():
    Tkinter.Label(root, text= '4', borderwidth=25 ).grid(row=1,column=1)
    Tkinter.Label(root, text= '8', borderwidth=25 ).grid(row=1,column=2)
    Tkinter.Label(root, text= '3', borderwidth=25 ).grid(row=1,column=3)
    Tkinter.Label(root, text= '2', borderwidth=25 ).grid(row=2,column=1)
    Tkinter.Label(root, text= '5', borderwidth=25 ).grid(row=2,column=2)
    Tkinter.Label(root, text= '1', borderwidth=25 ).grid(row=2,column=3)
    Tkinter.Label(root, text= '7', borderwidth=25 ).grid(row=3,column=1)
    Tkinter.Label(root, text= '6', borderwidth=25 ).grid(row=3,column=2)
    Tkinter.Label(root, text= ' ', borderwidth=25 ).grid(row=3,column=3)

    root.after(1000, mainprg3)

root.mainloop()

是否要在不同的窗口中显示每个窗口?同时显示是什么意思?肩并肩?在彼此的上面?不是在不同的窗口中。我想一个接一个地显示它们(就像幻灯片放映一样)。与其将更多的标签重叠在一起,为什么不保留对它们的引用并更改它们的文本?例如,这将使您的代码更具可读性,
topleft.config(text=“4”)
。我不明白您想说什么。只要接受答案,让每个人都知道您的问题已经解决。不客气:)您是否想过将所有幻灯片的内容存储在一个2D阵列中?我可以帮你打字吗。只需使用for循环迭代每个接口,您只需要1个更新函数istead为40。每个接口与前一个接口不同。空白由一个数字代替,反之亦然。所以我想不出如何对它们进行迭代。您可以使用字符串来表示数字和空格,因此与python没有区别。
import Tkinter

root = Tkinter.Tk(  )
root.title("8 Puzzle Game")

Tkinter.Label(root, text= '4', borderwidth=25 ).grid(row=1,column=1)
Tkinter.Label(root, text= ' ', borderwidth=25 ).grid(row=1,column=2)
Tkinter.Label(root, text= '3', borderwidth=25 ).grid(row=1,column=3)
Tkinter.Label(root, text= '2', borderwidth=25 ).grid(row=2,column=1)
Tkinter.Label(root, text= '8', borderwidth=25 ).grid(row=2,column=2)
Tkinter.Label(root, text= '5', borderwidth=25 ).grid(row=2,column=3)
Tkinter.Label(root, text= '7', borderwidth=25 ).grid(row=3,column=1)
Tkinter.Label(root, text= '6', borderwidth=25 ).grid(row=3,column=2)
Tkinter.Label(root, text= '1', borderwidth=25 ).grid(row=3,column=3)

def mainprg():

    Tkinter.Label(root, text= '4', borderwidth=25 ).grid(row=1,column=1)
    Tkinter.Label(root, text= '8', borderwidth=25 ).grid(row=1,column=2)
    Tkinter.Label(root, text= '3', borderwidth=25 ).grid(row=1,column=3)
    Tkinter.Label(root, text= '2', borderwidth=25 ).grid(row=2,column=1)
    Tkinter.Label(root, text= ' ', borderwidth=25 ).grid(row=2,column=2)
    Tkinter.Label(root, text= '5', borderwidth=25 ).grid(row=2,column=3)
    Tkinter.Label(root, text= '7', borderwidth=25 ).grid(row=3,column=1)
    Tkinter.Label(root, text= '6', borderwidth=25 ).grid(row=3,column=2)
    Tkinter.Label(root, text= '1', borderwidth=25 ).grid(row=3,column=3)

    root.after(1000, mainprg1)

B = Tkinter.Button(root, text = "Run", command = mainprg)
B.grid(row = 4, column = 1)



def mainprg1():
    Tkinter.Label(root, text= '4', borderwidth=25 ).grid(row=1,column=1)
    Tkinter.Label(root, text= '8', borderwidth=25 ).grid(row=1,column=2)
    Tkinter.Label(root, text= '3', borderwidth=25 ).grid(row=1,column=3)
    Tkinter.Label(root, text= '2', borderwidth=25 ).grid(row=2,column=1)
    Tkinter.Label(root, text= '5', borderwidth=25 ).grid(row=2,column=2)
    Tkinter.Label(root, text= ' ', borderwidth=25 ).grid(row=2,column=3)
    Tkinter.Label(root, text= '7', borderwidth=25 ).grid(row=3,column=1)
    Tkinter.Label(root, text= '6', borderwidth=25 ).grid(row=3,column=2)
    Tkinter.Label(root, text= '1', borderwidth=25 ).grid(row=3,column=3)

    root.after(1000, mainprg2)
def mainprg2():
    Tkinter.Label(root, text= '4', borderwidth=25 ).grid(row=1,column=1)
    Tkinter.Label(root, text= '8', borderwidth=25 ).grid(row=1,column=2)
    Tkinter.Label(root, text= '3', borderwidth=25 ).grid(row=1,column=3)
    Tkinter.Label(root, text= '2', borderwidth=25 ).grid(row=2,column=1)
    Tkinter.Label(root, text= '5', borderwidth=25 ).grid(row=2,column=2)
    Tkinter.Label(root, text= '1', borderwidth=25 ).grid(row=2,column=3)
    Tkinter.Label(root, text= '7', borderwidth=25 ).grid(row=3,column=1)
    Tkinter.Label(root, text= '6', borderwidth=25 ).grid(row=3,column=2)
    Tkinter.Label(root, text= ' ', borderwidth=25 ).grid(row=3,column=3)

    root.after(1000, mainprg3)

root.mainloop()