2016-05-29 129 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'。 –

相关问题