2014-10-11 24 views
-1

我寫了一個程序,大約有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()

在這裏,我必須每次顯示下一個接口按下運行按鈕。我應該怎麼做才能同時顯示它們?

+0

你想顯示每一個在不同的窗口? – TuxTorvalds 2014-10-11 13:20:20

+0

你是什麼意思*「同時」*?並排?在彼此之上? – jonrsharpe 2014-10-11 13:22:40

+0

不在另一個窗口中。我想要一個接一個地顯示它們(如幻燈片放映)。 – 2014-10-11 13:23:17

回答

0

如果你的意思是「按下按鈕一次,然後運行它們都在一排」你能做到這一點,通過

root.after(1000, mainprgX) 

其中X具有取代

B.configure(command = mainprgX) 

由被替換實際數量。

這將在每個函數結束時觸發一秒計時器來啓動下一個計時器。

因此,新的代碼將是:

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

運行良好。感謝幫助。 – 2014-10-11 13:38:56

+0

只需接受答案,讓每個人都看到你的問題解決了。 不客氣:) – TuxTorvalds 2014-10-11 13:47:37

+0

您是否考慮將所有幻燈片的內容存儲在一個2D陣列中?可以幫你打字。只需用for循環迭代每一個,你只需要1次更新功能就是40. – TuxTorvalds 2014-10-11 13:49:47