2016-05-29 81 views
0

所以我在做一個遊戲,我想知道爲什麼行/列顯示一個而不是顯示兩個。當我評論一個,另一個顯示,反之亦然,而不是兩個顯示。Python GUI只顯示一個標籤而不是兩個

class OthelloGUI(): 

    def __init__(self): 

     self._root_window = tkinter.Tk() 

     self._root_window.title('Othello') 

     self.read_row() 

     self.read_column() 


    def read_row(self) -> int: 


     self.row_text =tkinter.StringVar() 

     self.row_text.set('Num of rows:') 

     row_label = tkinter.Label(
       master = self._root_window, textvariable = self.row_text, 
       background = 'yellow', height = 1, width = 10, font = DEFAULT_FONT) 

     row_label.grid(row=1, column = 0, padx = 10, pady=10, sticky = tkinter.W+tkinter.N) 

     return self.row.get() 


    def read_column(self) -> int: 

     self.column_text =tkinter.StringVar() 

     self.column_text.set('Num of columns:') 

     column_label = tkinter.Label(
       master = self._root_window, textvariable = self.column_text, 
       background = 'yellow', height = 1, width = 13, font = DEFAULT_FONT) 

     column_label.grid(row=1, column = 0, padx = 10, pady=50, sticky = tkinter.W+tkinter.N) 

     return self.column.get() 

回答

1

要調用grid用相同的座標:

row_label.grid(row=1, column = 0, padx = 10, pady=10, sticky = tkinter.W+tkinter.N) 

column_label.grid(row=1, column = 0, padx = 10, pady=50, sticky = tkinter.W+tkinter.N) 

當電網無論是在(1,0),第二個將覆蓋第一。相反,使用不同的行/列參數:

row_label.grid(row=1, column = 0, padx = 10, pady=10, sticky = tkinter.W+tkinter.N) 

column_label.grid(row=2, column = 0, padx = 10, pady=50, sticky = tkinter.W+tkinter.N) 

當然,設置爲任何你在你的界面需要的行/列。

+0

哦,我有一個新的問題。我在read_row下添加了optionmenus,但它表示optionmenu沒有定義。 'option = OptionMenu(self.root_window,self.row,4,6,8,10,12,14,16) option.grid(row = 1,column = 1,padx = 10,pady = 10,sticky = tkinter.E + tkinter.N) return self.row.get()' – accelerate

+1

@accelerate您通常應該爲另一個新問題創建另一個帖子。無論如何,我可以嘗試回答 - 你似乎已經導入了'tkinter',所以請嘗試使用'tkinter.OptionMenu'而不是'OptionMenu'。 –

相關問題