Как пояснил jasonharper, следующий код должен работать:
from Tkinter import *
class window:
Window=None
def __init__(self):
self.Window = Tk()
self.Window.geometry("300x200")
def show(self):
self.Window.mainloop()
class frame:
frame = None
row = 0
column = 0
variable = {}
def __init__(self,window=None):
self.frame = Frame(window.Window)
self.frame.grid(row=0,column=0)
def moverow(self,no):
self.row = self.row + no
self.column = 0
def movecolumn(self,no):
self.column = self.column + no
def checkbox(self, var, label):
variable = IntVar()
Checkbutton(self.frame,text=label,variable=variable).grid(row=self.row,column=self.column)
self.variable[var] = variable
def display(self, llabel, rlabel):
Label(self.frame,text=llabel).grid(row=self.row,column=self.column)
Label(self.frame,text=rlabel).grid(row=self.row,column=self.column+1)
def nextbutton(self,label,anotherframe):
button = Button(self.frame,text=label,command= lambda: anotherframe.show())
button.grid(row=self.row,column=self.column)
def button(self,label,function):
button = Button(self.frame,text=label,command= lambda: function())
button.grid(row=self.row,column=self.column)
def show(self):
self.frame.tkraise()
window1 = window()
frame1 = frame(window1)
frame1.display("name:","baarath")
frame2 = frame(window1)
frame2.display("frame:","2")
frame2.moverow(1)
frame2.nextbutton("next",frame1)
frame2.moverow(1)
frame2.checkbox("male","male")
frame2.show()
window1.show()
Этот код удаляет строку self.frame.grid_propogate(0)
.Причина того, что эта строка привела к сбою программы, заключается в том, что она препятствует естественной способности фрейма изменять размер, чтобы соответствовать ее содержимому, то есть при том, что он остается в том размере, в котором он был (в данном случае 0x0) после вызова этой строки.Для получения дополнительной информации см эта страница .