2014-10-10 47 views
0

在下面的程序中,不是逐個顯示接口,而是在按下按鈕時直接顯示第3個接口。在Python中使用Tkinter顯示一系列界面

import Tkinter 

root = Tkinter.Tk() 
root.title("My First Game") 

for r in range(3): 
    for c in range(3): 
     Tkinter.Label(root, text= '3', borderwidth=20).grid(row=1,column=1) 
     Tkinter.Label(root, text= '6', borderwidth=20).grid(row=1,column=2) 
     Tkinter.Label(root, text= '4', borderwidth=20).grid(row=1,column=3) 
     Tkinter.Label(root, text= '2', borderwidth=20).grid(row=2,column=1) 
     Tkinter.Label(root, text= '7', borderwidth=20).grid(row=2,column=2) 
     Tkinter.Label(root, text= ' ', borderwidth=20).grid(row=2,column=3) 
     Tkinter.Label(root, text= '5', borderwidth=20).grid(row=3,column=1) 
     Tkinter.Label(root, text= '1', borderwidth=20).grid(row=3,column=2) 
     Tkinter.Label(root, text= '8', borderwidth=20).grid(row=3,column=3) 

def mainprg(): 
    for r in range(3): 
     for c in range(3): 
      Tkinter.Label(root, text= '3', borderwidth=20).grid(row=1,column=1) 
      Tkinter.Label(root, text= '6', borderwidth=20).grid(row=1,column=2) 
      Tkinter.Label(root, text= ' ', borderwidth=20).grid(row=1,column=3) 
      Tkinter.Label(root, text= '2', borderwidth=20).grid(row=2,column=1) 
      Tkinter.Label(root, text= '7', borderwidth=20).grid(row=2,column=2) 
      Tkinter.Label(root, text= '4', borderwidth=20).grid(row=2,column=3) 
      Tkinter.Label(root, text= '5', borderwidth=20).grid(row=3,column=1) 
      Tkinter.Label(root, text= '1', borderwidth=20).grid(row=3,column=2) 
      Tkinter.Label(root, text= '8', borderwidth=20).grid(row=3,column=3) 


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



def mainprg1(): 
    for r in range(3): 
     for c in range(3): 
      Tkinter.Label(root, text= '3', borderwidth=20).grid(row=1,column=1) 
      Tkinter.Label(root, text= ' ', borderwidth=20).grid(row=1,column=2) 
      Tkinter.Label(root, text= '6', borderwidth=20).grid(row=1,column=3) 
      Tkinter.Label(root, text= '2', borderwidth=20).grid(row=2,column=1) 
      Tkinter.Label(root, text= '7', borderwidth=20).grid(row=2,column=2) 
      Tkinter.Label(root, text= '4', borderwidth=20).grid(row=2,column=3) 
      Tkinter.Label(root, text= '5', borderwidth=20).grid(row=3,column=1) 
      Tkinter.Label(root, text= '1', borderwidth=20).grid(row=3,column=2) 
      Tkinter.Label(root, text= '8', borderwidth=20).grid(row=3,column=3) 


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

如何通過點擊運行按鈕來顯示一系列界面?

+1

你的縮進在第一個循環中是錯誤的,除此之外,我不完全確定你爲什麼循環,在循環中沒有使用r或c值,你只是在做同樣的東西9次 - 因爲你是網格設置標籤來設置位置 – Scironic 2014-10-10 14:02:53

+0

...你把調用'mainpr **調用'mainprg'的按鈕上的g1' **;你期望會發生什麼?再次,你應該看看例如http://stackoverflow.com/a/26213779/3001761而不是隻是隨機打包在更多的小部件。正如@Scironic指出的那樣,for循環(仍然)毫無意義。 – jonrsharpe 2014-10-10 14:03:52

+0

我已更正了縮進並刪除了循環。我應該怎麼做才能逐個顯示接口?當我按下「運行」按鈕時,它會直接跳轉到跳過其間接口的最後一個接口。 – 2014-10-10 14:08:35

回答

0

運行你的程序我現在明白你在問什麼。

目前定義的按鈕被mainprg(),然後用一個按鈕,將運行mainprg1覆蓋它()命令。

如果刪除了B中的第二個定義:

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

,並把這個你mainprg()函數中:

B.configure(command = mainprg1) 

它應該工作。

編輯:固定的細節感謝jonrsharpe

EDIT2:這裏是我工作的代碼(在Python 3.4 - 注意:Tkinter現在tkinter - 我也加入mainprg1命令重新定義回mainprg,只是踢

import tkinter 

root = tkinter.Tk() 
root.title("My First Game") 

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

def mainprg(): 

    tkinter.Label(root, text= '3', borderwidth=20).grid(row=1,column=1) 
    tkinter.Label(root, text= '6', borderwidth=20).grid(row=1,column=2) 
    tkinter.Label(root, text= ' ', borderwidth=20).grid(row=1,column=3) 
    tkinter.Label(root, text= '2', borderwidth=20).grid(row=2,column=1) 
    tkinter.Label(root, text= '7', borderwidth=20).grid(row=2,column=2) 
    tkinter.Label(root, text= '4', borderwidth=20).grid(row=2,column=3) 
    tkinter.Label(root, text= '5', borderwidth=20).grid(row=3,column=1) 
    tkinter.Label(root, text= '1', borderwidth=20).grid(row=3,column=2) 
    tkinter.Label(root, text= '8', borderwidth=20).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= '3', borderwidth=20).grid(row=1,column=1) 
    tkinter.Label(root, text= ' ', borderwidth=20).grid(row=1,column=2) 
    tkinter.Label(root, text= '6', borderwidth=20).grid(row=1,column=3) 
    tkinter.Label(root, text= '2', borderwidth=20).grid(row=2,column=1) 
    tkinter.Label(root, text= '7', borderwidth=20).grid(row=2,column=2) 
    tkinter.Label(root, text= '4', borderwidth=20).grid(row=2,column=3) 
    tkinter.Label(root, text= '5', borderwidth=20).grid(row=3,column=1) 
    tkinter.Label(root, text= '1', borderwidth=20).grid(row=3,column=2) 
    tkinter.Label(root, text= '8', borderwidth=20).grid(row=3,column=3) 

    B.configure(command = mainprg) 

root.mainloop() 
+1

命令沒有「重新定義」 - OP在舊的按鈕上放置一個全新的按鈕並將其分配到相同的名稱 – jonrsharpe 2014-10-10 14:11:07

+0

True - B被重新定義,而不是按鈕。 – Scironic 2014-10-10 14:15:27

+0

將它放在mainprg()函數中,它給出了一個錯誤,說「name'mainprg1'沒有被定義。 – 2014-10-10 14:21:25

相關問題